[Bf-blender-cvs] [ccb866f9f68] cycles-x: Cleanup: make ShaderType a template parameter for SVM nodes
Brecht Van Lommel
noreply at git.blender.org
Fri May 7 15:12:32 CEST 2021
Commit: ccb866f9f68b0e37c0ca4d159daaa5096675462f
Author: Brecht Van Lommel
Date: Wed May 5 16:50:35 2021 +0200
Branches: cycles-x
https://developer.blender.org/rBccb866f9f68b0e37c0ca4d159daaa5096675462f
Cleanup: make ShaderType a template parameter for SVM nodes
===================================================================
M intern/cycles/kernel/svm/svm.h
M intern/cycles/kernel/svm/svm_closure.h
===================================================================
diff --git a/intern/cycles/kernel/svm/svm.h b/intern/cycles/kernel/svm/svm.h
index 9ae19c3fa38..a1ae365b956 100644
--- a/intern/cycles/kernel/svm/svm.h
+++ b/intern/cycles/kernel/svm/svm.h
@@ -258,7 +258,7 @@ ccl_device_noinline void svm_eval_nodes(INTEGRATOR_STATE_CONST_ARGS,
break;
}
case NODE_CLOSURE_BSDF:
- svm_node_closure_bsdf<node_feature_mask>(kg, sd, stack, node, type, path_flag, &offset);
+ svm_node_closure_bsdf<node_feature_mask, type>(kg, sd, stack, node, path_flag, &offset);
break;
case NODE_CLOSURE_EMISSION:
if (NODES_FEATURE(EMISSION)) {
@@ -414,12 +414,12 @@ ccl_device_noinline void svm_eval_nodes(INTEGRATOR_STATE_CONST_ARGS,
break;
case NODE_CLOSURE_VOLUME:
if (NODES_FEATURE(VOLUME)) {
- svm_node_closure_volume(kg, sd, stack, node, type);
+ svm_node_closure_volume<type>(kg, sd, stack, node);
}
break;
case NODE_PRINCIPLED_VOLUME:
if (NODES_FEATURE(VOLUME)) {
- svm_node_principled_volume(kg, sd, stack, node, type, path_flag, &offset);
+ svm_node_principled_volume<type>(kg, sd, stack, node, path_flag, &offset);
}
break;
case NODE_MATH:
diff --git a/intern/cycles/kernel/svm/svm_closure.h b/intern/cycles/kernel/svm/svm_closure.h
index a62616b3f85..27060f29a38 100644
--- a/intern/cycles/kernel/svm/svm_closure.h
+++ b/intern/cycles/kernel/svm/svm_closure.h
@@ -57,14 +57,9 @@ ccl_device void svm_node_glass_setup(
}
}
-template<uint node_feature_mask>
-ccl_device void svm_node_closure_bsdf(const KernelGlobals *kg,
- ShaderData *sd,
- float *stack,
- uint4 node,
- ShaderType shader_type,
- int path_flag,
- int *offset)
+template<uint node_feature_mask, ShaderType shader_type>
+ccl_device void svm_node_closure_bsdf(
+ const KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, int path_flag, int *offset)
{
uint type, param1_offset, param2_offset;
@@ -77,7 +72,7 @@ ccl_device void svm_node_closure_bsdf(const KernelGlobals *kg,
uint4 data_node = read_node(kg, offset);
/* Only compute BSDF for surfaces, transparent variable is shared with volume extinction. */
- if (!NODES_FEATURE(BSDF) || mix_weight == 0.0f || shader_type != SHADER_TYPE_SURFACE) {
+ if ((!NODES_FEATURE(BSDF) || shader_type != SHADER_TYPE_SURFACE) || mix_weight == 0.0f) {
if (type == CLOSURE_BSDF_PRINCIPLED_ID) {
/* Read all principled BSDF extra data to get the right offset. */
read_node(kg, offset);
@@ -910,8 +905,11 @@ ccl_device void svm_node_closure_bsdf(const KernelGlobals *kg,
}
}
-ccl_device void svm_node_closure_volume(
- const KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, ShaderType shader_type)
+template<ShaderType shader_type>
+ccl_device void svm_node_closure_volume(const KernelGlobals *kg,
+ ShaderData *sd,
+ float *stack,
+ uint4 node)
{
#ifdef __VOLUME__
/* Only sum extinction for volumes, variable is shared with surface transparency. */
@@ -962,13 +960,9 @@ ccl_device void svm_node_closure_volume(
#endif
}
-ccl_device void svm_node_principled_volume(const KernelGlobals *kg,
- ShaderData *sd,
- float *stack,
- uint4 node,
- ShaderType shader_type,
- int path_flag,
- int *offset)
+template<ShaderType shader_type>
+ccl_device void svm_node_principled_volume(
+ const KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node, int path_flag, int *offset)
{
#ifdef __VOLUME__
uint4 value_node = read_node(kg, offset);
More information about the Bf-blender-cvs
mailing list