[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