[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24013] trunk/blender/source/blender/ render/intern/raytrace/reorganize.h: Bugfix: raytracer building could crash (abort due to an assert), when
Brecht Van Lommel
brecht at blender.org
Tue Oct 20 20:27:46 CEST 2009
Revision: 24013
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24013
Author: blendix
Date: 2009-10-20 20:27:46 +0200 (Tue, 20 Oct 2009)
Log Message:
-----------
Bugfix: raytracer building could crash (abort due to an assert), when
using for example a text object scaled down to size zero. This was due
to nan's generated through division by zero.
Modified Paths:
--------------
trunk/blender/source/blender/render/intern/raytrace/reorganize.h
Modified: trunk/blender/source/blender/render/intern/raytrace/reorganize.h
===================================================================
--- trunk/blender/source/blender/render/intern/raytrace/reorganize.h 2009-10-20 17:10:01 UTC (rev 24012)
+++ trunk/blender/source/blender/render/intern/raytrace/reorganize.h 2009-10-20 18:27:46 UTC (rev 24013)
@@ -159,7 +159,7 @@
{
float c_area = bb_area(child->bb, child->bb+3) ;
int nchilds = count_childs(child);
- float original_cost = (c_area / p_area)*nchilds + 1;
+ float original_cost = ((p_area != 0.0f)? (c_area / p_area)*nchilds: 1.0f) + 1;
float flatten_cost = nchilds;
if(flatten_cost < original_cost && nchilds >= 2)
{
@@ -397,7 +397,7 @@
for(Node *child = node->child; child && RE_rayobject_isAligned(child); child = child->sibling)
{
this->child[nchilds] = child;
- this->child_hit_prob[nchilds] = bb_area(child->bb, child->bb+3) / parent_area;
+ this->child_hit_prob[nchilds] = (parent_area != 0.0f)? bb_area(child->bb, child->bb+3) / parent_area: 1.0f;
nchilds++;
}
@@ -467,7 +467,7 @@
float parent_area = bb_area(node->bb, node->bb+3);
for(Node *child = node->child; child && RE_rayobject_isAligned(child); child = child->sibling)
{
- cost += ( bb_area(child->bb, child->bb+3) / parent_area ) * child->get_cost(1);
+ cost += ((parent_area != 0.0f)? ( bb_area(child->bb, child->bb+3) / parent_area ): 1.0f) * child->get_cost(1);
}
cost += testcost(nchilds);
More information about the Bf-blender-cvs
mailing list