Revision: 22356
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22356
Author:   jaguarandi
Date:     2009-08-10 23:37:16 +0200 (Mon, 10 Aug 2009)

Log Message:
-----------
Ability to disable hints at compile time

Modified Paths:
--------------
    branches/soc-2009-jaguarandi/source/blender/render/SConscript
    
branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_vbvh.cpp

Modified: branches/soc-2009-jaguarandi/source/blender/render/SConscript
===================================================================
--- branches/soc-2009-jaguarandi/source/blender/render/SConscript       
2009-08-10 21:31:05 UTC (rev 22355)
+++ branches/soc-2009-jaguarandi/source/blender/render/SConscript       
2009-08-10 21:37:16 UTC (rev 22356)
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 Import ('env')
 
-cflags = ['-O3']
+cflags = ['-O3','-msse2','-mfpmath=sse']
 cxxflags = ['-O3','-msse2','-mfpmath=sse']
 sources = env.Glob('intern/source/*.c')
 raysources = env.Glob('intern/raytrace/*.cpp')

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-10 21:31:05 UTC (rev 22355)
+++ 
branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_vbvh.cpp
       2009-08-10 21:37:16 UTC (rev 22356)
@@ -46,6 +46,8 @@
 #define BVHNode VBVHNode
 #define BVHTree VBVHTree
 
+
+#define RE_DO_HINTS    (0)
 #define RAY_BB_TEST_COST (0.2f)
 #define DFS_STACK_SIZE 256
 //#define DYNAMIC_ALLOC_BB
@@ -293,20 +295,20 @@
 template<class Node>
 float bvh_refit(Node *node)
 {
-       if(RayObject_isAligned(node)) return 0; 
-       if(RayObject_isAligned(node->child)) return 0;
+       if(!RayObject_isAligned(node)) return 0;        
+       if(!RayObject_isAligned(node->child)) return 0;
        
        float total = 0;
        
-       for(Node *child = node->child; RayObject_isAligned(child) && child; 
child = child->sibling)
+       for(Node *child = node->child; child; child = child->sibling)
                total += bvh_refit(child);
                
        float old_area = bb_area(node->bb, node->bb+3);
        INIT_MINMAX(node->bb, node->bb+3);
-       for(Node *child = node->child; RayObject_isAligned(child) && child; 
child = child->sibling)
+       for(Node *child = node->child; child; child = child->sibling)
        {
                DO_MIN(child->bb, node->bb);
-               DO_MIN(child->bb+3, node->bb+3);
+               DO_MAX(child->bb+3, node->bb+3);
        }
        total += old_area - bb_area(node->bb, node->bb+3);
        return total;
@@ -329,8 +331,8 @@
        obj->root = bvh_rearrange<BVHTree,BVHNode,RTBuilder>( obj, obj->builder 
);
        reorganize(obj->root);
        remove_useless(obj->root, &obj->root);
+       printf("refit: %f\n", bvh_refit(obj->root) );
        pushup(obj->root);
-       printf("refit: %f\n", bvh_refit(obj->root) );
        pushdown(obj->root);
 //     obj->root = memory_rearrange(obj->root);
        obj->cost = 1.0;
@@ -342,7 +344,7 @@
 template<int StackSize>
 int intersect(BVHTree *obj, Isect* isec)
 {
-       if(isec->hint)
+       if(RE_DO_HINTS && isec->hint)
        {
                LCTSHint *lcts = (LCTSHint*)isec->hint;
                isec->hint = 0;
@@ -423,13 +425,22 @@
 template<class Tree>
 void bvh_hint_bb(Tree *tree, LCTSHint *hint, float *min, float *max)
 {
-       HintBB bb;
-       VECCOPY(bb.bb, min);
-       VECCOPY(bb.bb+3, max);
+       if(RE_DO_HINTS)
+       {
+               HintBB bb;
+               VECCOPY(bb.bb, min);
+               VECCOPY(bb.bb+3, max);
        
-       hint->size = 0;
-       bvh_dfs_make_hint( tree->root, hint, 0, &bb );
-       tot_hints++;
+               hint->size = 0;
+               bvh_dfs_make_hint( tree->root, hint, 0, &bb );
+               tot_hints++;
+       }
+       else
+       {
+               hint->size = 0;
+               hint->stack[hint->size++] = (RayObject*)tree->root;
+               tot_hints++;
+       }
 }
 
 void bfree(BVHTree *tree)


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to