[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22197] branches/soc-2009-jaguarandi/ source/blender/render/intern: single tree (by default)
André Pinto
andresusanopinto at gmail.com
Tue Aug 4 01:25:39 CEST 2009
Revision: 22197
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22197
Author: jaguarandi
Date: 2009-08-04 01:25:38 +0200 (Tue, 04 Aug 2009)
Log Message:
-----------
single tree (by default)
now that build is nlogn (it should be worth to the tree of trees)
Modified Paths:
--------------
branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp
branches/soc-2009-jaguarandi/source/blender/render/intern/source/rayshade.c
Modified: branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp
===================================================================
--- branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp 2009-08-03 20:33:22 UTC (rev 22196)
+++ branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp 2009-08-03 23:25:38 UTC (rev 22197)
@@ -335,8 +335,8 @@
right_side= bb_area(sweep[i].bb, sweep[i].bb+3)*(sweep[i].cost+logf(size-i));
hcost = left_side+right_side;
- assert(left_side > 0);
- assert(right_side > 0);
+ assert(left_side >= 0);
+ assert(right_side >= 0);
if(left_side > bcost) break; //No way we can find a better heuristic in this axis
Modified: branches/soc-2009-jaguarandi/source/blender/render/intern/source/rayshade.c
===================================================================
--- branches/soc-2009-jaguarandi/source/blender/render/intern/source/rayshade.c 2009-08-03 20:33:22 UTC (rev 22196)
+++ branches/soc-2009-jaguarandi/source/blender/render/intern/source/rayshade.c 2009-08-03 23:25:38 UTC (rev 22197)
@@ -308,14 +308,19 @@
ObjectRen *obr = obi->obr;
obs++;
- assert((obi->flag & R_TRANSFORMED) == 0); //Not suported
-
- for(v=0;v<obr->totvlak;v++)
+ if(obi->flag & R_TRANSFORMED)
{
- VlakRen *vlr = obr->vlaknodes[v>>8].vlak + (v&255);
- if(is_raytraceable_vlr(re, vlr))
- faces++;
+ faces++;
}
+ else
+ {
+ for(v=0;v<obr->totvlak;v++)
+ {
+ VlakRen *vlr = obr->vlaknodes[v>>8].vlak + (v&255);
+ if(is_raytraceable_vlr(re, vlr))
+ faces++;
+ }
+ }
}
//Create raytree
@@ -329,23 +334,31 @@
for(obi=re->instancetable.first; obi; obi=obi->next)
if(is_raytraceable(re, obi))
{
- int v;
- ObjectRen *obr = obi->obr;
-
- for(v=0;v<obr->totvlak;v++)
+ if(obi->flag & R_TRANSFORMED)
{
- VlakRen *vlr = obr->vlaknodes[v>>8].vlak + (v&255);
- face->v1 = vlr->v1->co;
- face->v2 = vlr->v2->co;
- face->v3 = vlr->v3->co;
- face->v4 = vlr->v4 ? vlr->v4->co : NULL;
-
- face->ob = obi;
- face->face = vlr;
-
- RE_rayobject_add( raytree, RayObject_unalignRayFace(face) );
- face++;
+ RayObject *obj = makeraytree_object(re, obi);
+ RE_rayobject_add( re->raytree, obj );
}
+ else
+ {
+ int v;
+ ObjectRen *obr = obi->obr;
+
+ for(v=0;v<obr->totvlak;v++)
+ {
+ VlakRen *vlr = obr->vlaknodes[v>>8].vlak + (v&255);
+ face->v1 = vlr->v1->co;
+ face->v2 = vlr->v2->co;
+ face->v3 = vlr->v3->co;
+ face->v4 = vlr->v4 ? vlr->v4->co : NULL;
+
+ face->ob = obi;
+ face->face = vlr;
+
+ RE_rayobject_add( raytree, RayObject_unalignRayFace(face) );
+ face++;
+ }
+ }
}
RE_rayobject_done( raytree );
}
@@ -356,6 +369,7 @@
int i;
const char *tree_type = "Tree(unknown)";
+ re->r.raytrace_tree_type = R_RAYSTRUCTURE_SINGLE_BVH;
#ifdef RE_RAYCOUNTER
if(re->r.raytrace_tree_type == R_RAYTRACE_TREE_BVH)
tree_type = "BVH";
More information about the Bf-blender-cvs
mailing list