[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53137] trunk/blender/source/blender: Multires baker: made octree aware of user-defined resolution in performance panel

Sergey Sharybin sergey.vfx at gmail.com
Tue Dec 18 18:46:54 CET 2012


Revision: 53137
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53137
Author:   nazgul
Date:     2012-12-18 17:46:54 +0000 (Tue, 18 Dec 2012)
Log Message:
-----------
Multires baker: made octree aware of user-defined resolution in performance panel

Modified Paths:
--------------
    trunk/blender/source/blender/editors/object/object_bake.c
    trunk/blender/source/blender/render/extern/include/RE_multires_bake.h
    trunk/blender/source/blender/render/intern/include/rendercore.h
    trunk/blender/source/blender/render/intern/source/multires_bake.c
    trunk/blender/source/blender/render/intern/source/rayshade.c

Modified: trunk/blender/source/blender/editors/object/object_bake.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_bake.c	2012-12-18 17:46:48 UTC (rev 53136)
+++ trunk/blender/source/blender/editors/object/object_bake.c	2012-12-18 17:46:54 UTC (rev 53137)
@@ -99,6 +99,7 @@
 	int number_of_rays;
 	float bias;
 	int raytrace_structure;
+	int octree_resolution;
 } MultiresBakeJob;
 
 static int multiresbake_check(bContext *C, wmOperator *op)
@@ -317,6 +318,7 @@
 		bkr.bias = scene->r.bake_biasdist;
 		bkr.number_of_rays = scene->r.bake_rays_number;
 		bkr.raytrace_structure = scene->r.raytrace_structure;
+		bkr.octree_resolution = scene->r.ocres;
 
 		/* create low-resolution DM (to bake to) and hi-resolution DM (to bake from) */
 		bkr.hires_dm = multiresbake_create_hiresdm(scene, ob, &bkr.tot_lvl, &bkr.simple);
@@ -353,6 +355,7 @@
 	bkj->bias = scene->r.bake_biasdist;
 	bkj->number_of_rays = scene->r.bake_rays_number;
 	bkj->raytrace_structure = scene->r.raytrace_structure;
+	bkj->octree_resolution = scene->r.ocres;
 
 	CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases)
 	{
@@ -418,6 +421,7 @@
 		bkr.bias = bkj->bias;
 		bkr.number_of_rays = bkj->number_of_rays;
 		bkr.raytrace_structure = bkj->raytrace_structure;
+		bkr.octree_resolution = bkj->octree_resolution;
 
 		RE_multires_bake_images(&bkr);
 

Modified: trunk/blender/source/blender/render/extern/include/RE_multires_bake.h
===================================================================
--- trunk/blender/source/blender/render/extern/include/RE_multires_bake.h	2012-12-18 17:46:48 UTC (rev 53136)
+++ trunk/blender/source/blender/render/extern/include/RE_multires_bake.h	2012-12-18 17:46:54 UTC (rev 53137)
@@ -49,6 +49,7 @@
 	int baked_objects, baked_faces;
 
 	int raytrace_structure;
+	int octree_resolution;
 
 	short *stop;
 	short *do_update;

Modified: trunk/blender/source/blender/render/intern/include/rendercore.h
===================================================================
--- trunk/blender/source/blender/render/intern/include/rendercore.h	2012-12-18 17:46:48 UTC (rev 53136)
+++ trunk/blender/source/blender/render/intern/include/rendercore.h	2012-12-18 17:46:54 UTC (rev 53137)
@@ -83,7 +83,7 @@
 
 /* -------- ray.c ------- */
 
-struct RayObject *RE_rayobject_create(struct Render *re, int type, int size);
+struct RayObject *RE_rayobject_create(int type, int size, int octree_resolution);
 
 extern void freeraytree(Render *re);
 extern void makeraytree(Render *re);

Modified: trunk/blender/source/blender/render/intern/source/multires_bake.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/multires_bake.c	2012-12-18 17:46:48 UTC (rev 53136)
+++ trunk/blender/source/blender/render/intern/source/multires_bake.c	2012-12-18 17:46:54 UTC (rev 53137)
@@ -869,7 +869,7 @@
 	face_side = (grid_size << 1) - 1;
 	num_faces = num_grids * (grid_size - 1) * (grid_size - 1);
 
-	raytree = ao_data->raytree = RE_rayobject_create(NULL, bkr->raytrace_structure, num_faces);
+	raytree = ao_data->raytree = RE_rayobject_create(bkr->raytrace_structure, num_faces, bkr->octree_resolution);
 	face = ao_data->rayfaces = (RayFace *) MEM_callocN(num_faces * sizeof(RayFace), "ObjectRen faces");
 
 	for (i = 0; i < num_grids; i++) {

Modified: trunk/blender/source/blender/render/intern/source/rayshade.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/rayshade.c	2012-12-18 17:46:48 UTC (rev 53136)
+++ trunk/blender/source/blender/render/intern/source/rayshade.c	2012-12-18 17:46:54 UTC (rev 53137)
@@ -94,7 +94,7 @@
 	}
 }
 
-RayObject* RE_rayobject_create(Render *re, int type, int size)
+RayObject *RE_rayobject_create(int type, int size, int octree_resolution)
 {
 	RayObject * res = NULL;
 
@@ -117,7 +117,7 @@
 	
 		
 	if (type == R_RAYSTRUCTURE_OCTREE) //TODO dynamic ocres
-		res = RE_rayobject_octree_create(re ? re->r.ocres : 128, size);
+		res = RE_rayobject_octree_create(octree_resolution, size);
 	else if (type == R_RAYSTRUCTURE_BLIBVH)
 		res = RE_rayobject_blibvh_create(size);
 	else if (type == R_RAYSTRUCTURE_VBVH)
@@ -129,10 +129,18 @@
 	else
 		res = RE_rayobject_vbvh_create(size);	//Fallback
 	
+	return res;
+}
+
+static RayObject* rayobject_create(Render *re, int type, int size)
+{
+	RayObject * res = NULL;
+
+	res = RE_rayobject_create(type, size, re->r.ocres);
 	
-	if (res && re)
+	if (res)
 		RE_rayobject_config_control(res, re);
-	
+
 	return res;
 }
 
@@ -240,7 +248,7 @@
 			return NULL;
 
 		//Create Ray cast accelaration structure
-		raytree = RE_rayobject_create( re,  re->r.raytrace_structure, faces );
+		raytree = rayobject_create( re,  re->r.raytrace_structure, faces );
 		if (  (re->r.raytrace_options & R_RAYTRACE_USE_LOCAL_COORDS) )
 			vlakprimitive = obr->rayprimitives = (VlakPrimitive*)MEM_callocN(faces*sizeof(VlakPrimitive), "ObjectRen primitives");
 		else
@@ -334,7 +342,7 @@
 	}
 	
 	//Create raytree
-	raytree = re->raytree = RE_rayobject_create( re, re->r.raytrace_structure, faces+special );
+	raytree = re->raytree = rayobject_create( re, re->r.raytrace_structure, faces+special );
 
 	if ( (re->r.raytrace_options & R_RAYTRACE_USE_LOCAL_COORDS) ) {
 		vlakprimitive = re->rayprimitives = (VlakPrimitive*)MEM_callocN(faces*sizeof(VlakPrimitive), "Raytrace vlak-primitives");




More information about the Bf-blender-cvs mailing list