Commit: cb0b5f54a6ee14c2db3b7295d88244b8784d9540
Author: Sergey Sharybin
Date:   Wed Jul 6 12:09:11 2016 +0200
Branches: cycles_bvh
https://developer.blender.org/rBcb0b5f54a6ee14c2db3b7295d88244b8784d9540

Cycles BVH: Simplify fetching of regular BVH unaligned transform

Nice trick suggested by Brecht, thanks!

===================================================================

M       intern/cycles/kernel/geom/geom_bvh_nodes.h

===================================================================

diff --git a/intern/cycles/kernel/geom/geom_bvh_nodes.h 
b/intern/cycles/kernel/geom/geom_bvh_nodes.h
index 75d90f2..db13d6b 100644
--- a/intern/cycles/kernel/geom/geom_bvh_nodes.h
+++ b/intern/cycles/kernel/geom/geom_bvh_nodes.h
@@ -19,18 +19,11 @@ ccl_device_inline Transform 
bvh_unaligned_node_fetch_space(KernelGlobals *kg,
                                                            int child)
 {
        Transform space;
-       if(child == 0) {
-               space.x = kernel_tex_fetch(__bvh_nodes, nodeAddr+1);
-               space.y = kernel_tex_fetch(__bvh_nodes, nodeAddr+2);
-               space.z = kernel_tex_fetch(__bvh_nodes, nodeAddr+3);
-               space.w = kernel_tex_fetch(__bvh_nodes, nodeAddr+4);
-       }
-       else {
-               space.x = kernel_tex_fetch(__bvh_nodes, nodeAddr+5);
-               space.y = kernel_tex_fetch(__bvh_nodes, nodeAddr+6);
-               space.z = kernel_tex_fetch(__bvh_nodes, nodeAddr+7);
-               space.w = kernel_tex_fetch(__bvh_nodes, nodeAddr+8);
-       }
+       const int child_addr = nodeAddr + child * 4;
+       space.x = kernel_tex_fetch(__bvh_nodes, child_addr+1);
+       space.y = kernel_tex_fetch(__bvh_nodes, child_addr+2);
+       space.z = kernel_tex_fetch(__bvh_nodes, child_addr+3);
+       space.w = kernel_tex_fetch(__bvh_nodes, child_addr+4);
        return space;
 }

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

Reply via email to