Commit: 7d1be1a9cc9614762782d9f367cd8dd9b488906e
Author: Sergey Sharybin
Date:   Wed Jul 6 12:39:01 2016 +0200
Branches: cycles_bvh
https://developer.blender.org/rB7d1be1a9cc9614762782d9f367cd8dd9b488906e

Cycles BVH: Don't store w component of transform for regular bvh unaligned nodes

Saves quite some memory (467MB vs 528MB with koro.blend file).

Once again addressing review from Brecht.

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

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

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

diff --git a/intern/cycles/bvh/bvh.cpp b/intern/cycles/bvh/bvh.cpp
index 37d72fc..f127e26 100644
--- a/intern/cycles/bvh/bvh.cpp
+++ b/intern/cycles/bvh/bvh.cpp
@@ -518,11 +518,9 @@ void RegularBVH::pack_unaligned_node(int idx,
        data[1] = space0.x;
        data[2] = space0.y;
        data[3] = space0.z;
-       data[4] = space0.w;
-       data[5] = space1.x;
-       data[6] = space1.y;
-       data[7] = space1.z;
-       data[8] = space1.w;
+       data[4] = space1.x;
+       data[5] = space1.y;
+       data[6] = space1.z;
 
        memcpy(&pack.nodes[idx], data, sizeof(float4)*BVH_UNALIGNED_NODE_SIZE);
 }
diff --git a/intern/cycles/bvh/bvh.h b/intern/cycles/bvh/bvh.h
index 9ae1559..1675207 100644
--- a/intern/cycles/bvh/bvh.h
+++ b/intern/cycles/bvh/bvh.h
@@ -40,7 +40,7 @@ class Progress;
 #define BVH_ALIGN              4096
 #define TRI_NODE_SIZE  3
 
-#define BVH_UNALIGNED_NODE_SIZE 9
+#define BVH_UNALIGNED_NODE_SIZE 7
 #define BVH_UNALIGNED_QNODE_SIZE 14
 
 /* Packed BVH
diff --git a/intern/cycles/kernel/geom/geom_bvh_nodes.h 
b/intern/cycles/kernel/geom/geom_bvh_nodes.h
index 98bd25d..436ddf3 100644
--- a/intern/cycles/kernel/geom/geom_bvh_nodes.h
+++ b/intern/cycles/kernel/geom/geom_bvh_nodes.h
@@ -19,11 +19,11 @@ ccl_device_inline Transform 
bvh_unaligned_node_fetch_space(KernelGlobals *kg,
                                                            int child)
 {
        Transform space;
-       const int child_addr = nodeAddr + child * 4;
+       const int child_addr = nodeAddr + child * 3;
        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);
+       space.w = make_float4(0.0f, 0.0f, 0.0f, 1.0f);
        return space;
 }

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

Reply via email to