[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