[Bf-blender-cvs] [630a2623d68] soc-2019-cycles-procedural: Refactor Math node GPU code.

OmarSquircleArt noreply at git.blender.org
Fri Aug 2 14:26:15 CEST 2019


Commit: 630a2623d68609b90f89656e4cf414235270d6a6
Author: OmarSquircleArt
Date:   Fri Aug 2 14:27:10 2019 +0200
Branches: soc-2019-cycles-procedural
https://developer.blender.org/rB630a2623d68609b90f89656e4cf414235270d6a6

Refactor Math node GPU code.

===================================================================

M	source/blender/gpu/shaders/gpu_shader_material.glsl
M	source/blender/nodes/shader/nodes/node_shader_math.c
M	source/blender/nodes/shader/nodes/node_shader_vectMath.c

===================================================================

diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl
index 8f1d4a0504d..b327e821653 100644
--- a/source/blender/gpu/shaders/gpu_shader_material.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_material.glsl
@@ -368,12 +368,12 @@ void math_logarithm(float a, float b, out float result)
   result = (a > 0.0 && b > 0.0) ? log2(a) / log2(b) : 0.0;
 }
 
-void math_sqrt(float a, out float result)
+void math_sqrt(float a, float b, out float result)
 {
   result = (a > 0.0) ? sqrt(a) : 0.0;
 }
 
-void math_absolute(float a, out float result)
+void math_absolute(float a, float b, out float result)
 {
   result = abs(a);
 }
@@ -398,22 +398,22 @@ void math_greater_than(float a, float b, out float result)
   result = (a > b) ? 1.0 : 0.0;
 }
 
-void math_round(float a, out float result)
+void math_round(float a, float b, out float result)
 {
   result = floor(a + 0.5);
 }
 
-void math_floor(float a, out float result)
+void math_floor(float a, float b, out float result)
 {
   result = floor(a);
 }
 
-void math_ceil(float a, out float result)
+void math_ceil(float a, float b, out float result)
 {
   result = ceil(a);
 }
 
-void math_fraction(float a, out float result)
+void math_fraction(float a, float b, out float result)
 {
   result = a - floor(a);
 }
@@ -428,32 +428,32 @@ void math_modulo(float a, float b, out float result)
   result = (a > 0.0) ? result : result - b;
 }
 
-void math_sine(float a, out float result)
+void math_sine(float a, float b, out float result)
 {
   result = sin(a);
 }
 
-void math_cosine(float a, out float result)
+void math_cosine(float a, float b, out float result)
 {
   result = cos(a);
 }
 
-void math_tangent(float a, out float result)
+void math_tangent(float a, float b, out float result)
 {
   result = tan(a);
 }
 
-void math_arcsine(float a, out float result)
+void math_arcsine(float a, float b, out float result)
 {
   result = (a <= 1.0 && a >= -1.0) ? asin(a) : 0.0;
 }
 
-void math_arccosine(float a, out float result)
+void math_arccosine(float a, float b, out float result)
 {
   result = (a <= 1.0 && a >= -1.0) ? acos(a) : 0.0;
 }
 
-void math_arctangent(float a, out float result)
+void math_arctangent(float a, float b, out float result)
 {
   result = atan(a);
 }
diff --git a/source/blender/nodes/shader/nodes/node_shader_math.c b/source/blender/nodes/shader/nodes/node_shader_math.c
index 6e99841429d..0bd1e882f47 100644
--- a/source/blender/nodes/shader/nodes/node_shader_math.c
+++ b/source/blender/nodes/shader/nodes/node_shader_math.c
@@ -68,29 +68,7 @@ static int gpu_shader_math(GPUMaterial *mat,
       [NODE_MATH_ARCTAN2] = "math_arctan2",
   };
 
-  switch (node->custom1) {
-    case NODE_MATH_SQRT:
-    case NODE_MATH_CEIL:
-    case NODE_MATH_SINE:
-    case NODE_MATH_ROUND:
-    case NODE_MATH_FLOOR:
-    case NODE_MATH_COSINE:
-    case NODE_MATH_ARCSINE:
-    case NODE_MATH_TANGENT:
-    case NODE_MATH_ABSOLUTE:
-    case NODE_MATH_FRACTION:
-    case NODE_MATH_ARCCOSINE:
-    case NODE_MATH_ARCTANGENT: {
-      /* use only first item and terminator */
-      GPUNodeStack tmp_in[2];
-      memcpy(&tmp_in[0], &in[0], sizeof(GPUNodeStack));
-      memcpy(&tmp_in[1], &in[2], sizeof(GPUNodeStack));
-      GPU_stack_link(mat, node, names[node->custom1], tmp_in, out);
-      break;
-    }
-    default:
-      GPU_stack_link(mat, node, names[node->custom1], in, out);
-  }
+  GPU_stack_link(mat, node, names[node->custom1], in, out);
   return 1;
 }
 
@@ -98,24 +76,20 @@ static void node_shader_update_math(bNodeTree *UNUSED(ntree), bNode *node)
 {
   bNodeSocket *sock = nodeFindSocket(node, SOCK_IN, "B");
 
-  switch (node->custom1) {
-    case NODE_MATH_SQRT:
-    case NODE_MATH_CEIL:
-    case NODE_MATH_SINE:
-    case NODE_MATH_ROUND:
-    case NODE_MATH_FLOOR:
-    case NODE_MATH_COSINE:
-    case NODE_MATH_ARCSINE:
-    case NODE_MATH_TANGENT:
-    case NODE_MATH_ABSOLUTE:
-    case NODE_MATH_FRACTION:
-    case NODE_MATH_ARCCOSINE:
-    case NODE_MATH_ARCTANGENT:
-      sock->flag |= SOCK_UNAVAIL;
-      break;
-    default:
-      sock->flag &= ~SOCK_UNAVAIL;
-  }
+  nodeSetSocketAvailability(sock,
+                            !ELEM(node->custom1,
+                                  NODE_MATH_SQRT,
+                                  NODE_MATH_CEIL,
+                                  NODE_MATH_SINE,
+                                  NODE_MATH_ROUND,
+                                  NODE_MATH_FLOOR,
+                                  NODE_MATH_COSINE,
+                                  NODE_MATH_ARCSINE,
+                                  NODE_MATH_TANGENT,
+                                  NODE_MATH_ABSOLUTE,
+                                  NODE_MATH_FRACTION,
+                                  NODE_MATH_ARCCOSINE,
+                                  NODE_MATH_ARCTANGENT));
 }
 
 void register_node_type_sh_math(void)
diff --git a/source/blender/nodes/shader/nodes/node_shader_vectMath.c b/source/blender/nodes/shader/nodes/node_shader_vectMath.c
index 85015b014cf..5b538c6b7c9 100644
--- a/source/blender/nodes/shader/nodes/node_shader_vectMath.c
+++ b/source/blender/nodes/shader/nodes/node_shader_vectMath.c
@@ -77,9 +77,9 @@ static void node_shader_update_vec_math(bNodeTree *UNUSED(ntree), bNode *node)
 
   nodeSetSocketAvailability(sockB,
                             !ELEM(node->custom1,
-                                  NODE_VECTOR_MATH_ABSOLUTE,
                                   NODE_VECTOR_MATH_SCALE,
                                   NODE_VECTOR_MATH_LENGTH,
+                                  NODE_VECTOR_MATH_ABSOLUTE,
                                   NODE_VECTOR_MATH_NORMALIZE));
   nodeSetSocketAvailability(sockScale, node->custom1 == NODE_VECTOR_MATH_SCALE);
   nodeSetSocketAvailability(sockVector,



More information about the Bf-blender-cvs mailing list