[Bf-blender-cvs] [5155c16] cycles_memory_experiments: Cycles leaf nodes split: Fix crash when rendering scene without inner nodes
Sergey Sharybin
noreply at git.blender.org
Tue Apr 14 14:32:03 CEST 2015
Commit: 5155c165b57a3d7d994c1d507e1ff9fb144c71c0
Author: Sergey Sharybin
Date: Tue Apr 14 17:26:06 2015 +0500
Branches: cycles_memory_experiments
https://developer.blender.org/rB5155c165b57a3d7d994c1d507e1ff9fb144c71c0
Cycles leaf nodes split: Fix crash when rendering scene without inner nodes
===================================================================
M intern/cycles/bvh/bvh.cpp
M intern/cycles/render/mesh.cpp
===================================================================
diff --git a/intern/cycles/bvh/bvh.cpp b/intern/cycles/bvh/bvh.cpp
index 9b510d8..d1c3fee 100644
--- a/intern/cycles/bvh/bvh.cpp
+++ b/intern/cycles/bvh/bvh.cpp
@@ -521,7 +521,7 @@ RegularBVH::RegularBVH(const BVHParams& params_, const vector<Object*>& objects_
void RegularBVH::pack_leaf(const BVHStackEntry& e, const LeafNode *leaf)
{
float4 data[BVH_NODE_LEAF_SIZE];
-
+ memset(data, 0, sizeof(data));
if(leaf->num_triangles() == 1 && pack.prim_index[leaf->m_lo] == -1) {
/* object */
data[0].x = __int_as_float(~(leaf->m_lo));
@@ -730,7 +730,7 @@ QBVH::QBVH(const BVHParams& params_, const vector<Object*>& objects_)
void QBVH::pack_leaf(const BVHStackEntry& e, const LeafNode *leaf)
{
float4 data[BVH_QNODE_LEAF_SIZE];
-
+ memset(data, 0, sizeof(data));
if(leaf->num_triangles() == 1 && pack.prim_index[leaf->m_lo] == -1) {
/* object */
data[0].x = __int_as_float(~(leaf->m_lo));
diff --git a/intern/cycles/render/mesh.cpp b/intern/cycles/render/mesh.cpp
index aa1c4c8..e665fce 100644
--- a/intern/cycles/render/mesh.cpp
+++ b/intern/cycles/render/mesh.cpp
@@ -1101,6 +1101,8 @@ void MeshManager::device_update_bvh(Device *device, DeviceScene *dscene, Scene *
if(pack.nodes.size()) {
dscene->bvh_nodes.reference((float4*)&pack.nodes[0], pack.nodes.size());
device->tex_alloc("__bvh_nodes", dscene->bvh_nodes);
+ }
+ if(pack.leaf_nodes.size()) {
dscene->bvh_leaf_nodes.reference((float4*)&pack.leaf_nodes[0], pack.leaf_nodes.size());
device->tex_alloc("__bvh_leaf_nodes", dscene->bvh_leaf_nodes);
}
More information about the Bf-blender-cvs
mailing list