Revision: 22213
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22213
Author:   jaguarandi
Date:     2009-08-04 19:24:49 +0200 (Tue, 04 Aug 2009)

Log Message:
-----------
Skip BB tests on primitives
the efficiency of this depends on ray-bb and ray-triangle functions efficiency

Modified Paths:
--------------
    
branches/soc-2009-jaguarandi/source/blender/render/extern/include/RE_raytrace.h
    
branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_vbvh.cpp

Modified: 
branches/soc-2009-jaguarandi/source/blender/render/extern/include/RE_raytrace.h
===================================================================
--- 
branches/soc-2009-jaguarandi/source/blender/render/extern/include/RE_raytrace.h 
    2009-08-04 15:40:49 UTC (rev 22212)
+++ 
branches/soc-2009-jaguarandi/source/blender/render/extern/include/RE_raytrace.h 
    2009-08-04 17:24:49 UTC (rev 22213)
@@ -37,7 +37,7 @@
 
 
 #define RE_RAY_LCTS_MAX_SIZE   256
-#define RT_USE_LAST_HIT        /* last shadow hit is reused before raycasting 
on whole tree */
+#define RT_USE_LAST_HIT                        /* last shadow hit is reused 
before raycasting on whole tree */
 //#define RT_USE_HINT                  /* last hit object is reused before 
raycasting on whole tree */
 
 #define RE_RAYCOUNTER

Modified: 
branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_vbvh.cpp
===================================================================
--- 
branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_vbvh.cpp
       2009-08-04 15:40:49 UTC (rev 22212)
+++ 
branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_vbvh.cpp
       2009-08-04 17:24:49 UTC (rev 22213)
@@ -81,12 +81,23 @@
 inline static void bvh_node_push_childs(Node *node, Isect *isec, Node **stack, 
int &stack_pos)
 {
        Node *child = node->child;
-       while(child)
+
+       if(!RayObject_isAligned(child))
        {
                stack[stack_pos++] = child;
-               if(RayObject_isAligned(child))
+       }
+       else
+       {
+               while(child)
+               {
+                       //Skips BB tests on primitives
+                       if(!RayObject_isAligned(child->child))
+                               stack[stack_pos++] = child->child;
+                       else
+                               stack[stack_pos++] = child;
+                               
                        child = child->sibling;
-               else break;
+               }
        }
 }
 


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to