[Bf-blender-cvs] [7d1be1a] cycles_bvh: Cycles BVH: Don't store w component of transform for regular bvh unaligned nodes
Sergey Sharybin
noreply at git.blender.org
Wed Jul 6 12:50:12 CEST 2016
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;
}
More information about the Bf-blender-cvs
mailing list