[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28710] branches/render25/source/blender/ render/intern/raytrace/rayobject_rtbuild.cpp: Fix for slow raytree build with zero bounding boxes, these would get

Brecht Van Lommel brecht at blender.org
Mon May 10 16:00:08 CEST 2010


Revision: 28710
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28710
Author:   blendix
Date:     2010-05-10 16:00:08 +0200 (Mon, 10 May 2010)

Log Message:
-----------
Fix for slow raytree build with zero bounding boxes, these would get
split into (0..1, 1..size) children which was very slow. Now it just
doesn't add primitives to the tree if they have a zero bounding box.

Modified Paths:
--------------
    branches/render25/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp

Modified: branches/render25/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp
===================================================================
--- branches/render25/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp	2010-05-10 12:58:21 UTC (rev 28709)
+++ branches/render25/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp	2010-05-10 14:00:08 UTC (rev 28710)
@@ -91,13 +91,22 @@
 
 void rtbuild_add(RTBuilder *b, RayObject *o)
 {
+	float bb[6];
+
 	assert( b->primitives.begin + b->primitives.maxsize != b->primitives.end );
+
+	INIT_MINMAX(bb, bb+3);
+	RE_rayobject_merge_bb(o, bb, bb+3);
+
+	/* skip objects with zero bounding box, they are of no use, and
+	   will give problems in rtbuild_heuristic_object_split later */
+	if(len_squared_v3v3(bb, bb+3) == 0.0f)
+		return;
 	
+	copy_v3_v3(b->primitives.end->bb, bb);
+	copy_v3_v3(b->primitives.end->bb+3, bb+3);
 	b->primitives.end->obj = o;
 	b->primitives.end->cost = RE_rayobject_cost(o);
-
-	INIT_MINMAX(b->primitives.end->bb, b->primitives.end->bb+3);
-	RE_rayobject_merge_bb(o, b->primitives.end->bb, b->primitives.end->bb+3);
 	
 	for(int i=0; i<3; i++)
 	{





More information about the Bf-blender-cvs mailing list