[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