[Bf-blender-cvs] [8066346] openvdb: Cycles: only store a single float for scalar outputs.
Kévin Dietrich
noreply at git.blender.org
Fri Jun 5 14:06:09 CEST 2015
Commit: 8066346267e7253a85f5ce6cd92a492f3c1e11c8
Author: Kévin Dietrich
Date: Mon May 11 01:31:53 2015 +0200
Branches: openvdb
https://developer.blender.org/rB8066346267e7253a85f5ce6cd92a492f3c1e11c8
Cycles: only store a single float for scalar outputs.
===================================================================
M intern/cycles/kernel/svm/svm_openvdb.h
===================================================================
diff --git a/intern/cycles/kernel/svm/svm_openvdb.h b/intern/cycles/kernel/svm/svm_openvdb.h
index 74fdae0..1722f40 100644
--- a/intern/cycles/kernel/svm/svm_openvdb.h
+++ b/intern/cycles/kernel/svm/svm_openvdb.h
@@ -25,16 +25,18 @@ ccl_device void svm_node_openvdb(KernelGlobals *kg, ShaderData *sd, float *stack
#ifdef __KERNEL_GPU__
float3 out = make_float3(0.0f, 0.0f, 0.0f);
#else
- float3 out = make_float3(0.0f, 0.0f, 0.0f);
if(type == NODE_VDB_FLOAT) {
- float r = 0.0f;
+ float out = 0.0f;
if(sampling == OPENVDB_SAMPLE_POINT) {
- r = kg->vdb_float_samplers_p[slot]->wsSample(openvdb::Vec3d(co.x, co.y, co.z));
+ out = kg->vdb_float_samplers_p[slot]->wsSample(openvdb::Vec3d(co.x, co.y, co.z));
}
else {
- r = kg->vdb_float_samplers_b[slot]->wsSample(openvdb::Vec3d(co.x, co.y, co.z));
+ out = kg->vdb_float_samplers_b[slot]->wsSample(openvdb::Vec3d(co.x, co.y, co.z));
+ }
+
+ if(stack_valid(out_offset)) {
+ stack_store_float(stack, out_offset, out);
}
- out = make_float3(r, r, r);
}
else if(type == NODE_VDB_VEC3S) {
openvdb::Vec3s r = openvdb::Vec3s(0.0f);
@@ -44,13 +46,14 @@ ccl_device void svm_node_openvdb(KernelGlobals *kg, ShaderData *sd, float *stack
else {
r = kg->vdb_vec3s_samplers_b[slot]->wsSample(openvdb::Vec3d(co.x, co.y, co.z));
}
- out = make_float3(r.x(), r.y(), r.z());
- }
-#endif
- if(stack_valid(out_offset)) {
- stack_store_float3(stack, out_offset, out);
+ float3 out = make_float3(r.x(), r.y(), r.z());
+
+ if(stack_valid(out_offset)) {
+ stack_store_float3(stack, out_offset, out);
+ }
}
+#endif
}
CCL_NAMESPACE_END
More information about the Bf-blender-cvs
mailing list