[Bf-blender-cvs] [cb0b5f5] cycles_bvh: Cycles BVH: Simplify fetching of regular BVH unaligned transform

Sergey Sharybin noreply at git.blender.org
Wed Jul 6 12:50:09 CEST 2016


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;
 }




More information about the Bf-blender-cvs mailing list