[Bf-blender-cvs] [9afba294fbc] soc-2019-cycles-procedural: Refactora and clean up Vector Math GPU code.
OmarSquircleArt
noreply at git.blender.org
Fri Aug 2 14:05:55 CEST 2019
Commit: 9afba294fbce4c5cff53158a1899612fc061a2ca
Author: OmarSquircleArt
Date: Fri Aug 2 14:06:48 2019 +0200
Branches: soc-2019-cycles-procedural
https://developer.blender.org/rB9afba294fbce4c5cff53158a1899612fc061a2ca
Refactora and clean up Vector Math GPU code.
I don't think editing the GPUNodeStack is a good idea. This should be handled another way.
===================================================================
M source/blender/gpu/shaders/gpu_shader_material.glsl
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 19b511b65fd..89bd2f4eb47 100644
--- a/source/blender/gpu/shaders/gpu_shader_material.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_material.glsl
@@ -479,120 +479,102 @@ void map_range(
}
}
-void vec_math_add(vec3 v1, vec3 v2, out vec3 outvec, out float outval)
+void vec_math_add(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = v1 + v2;
- outval = 0.0;
+ outvec = a + b;
}
-void vec_math_subtract(vec3 v1, vec3 v2, out vec3 outvec, out float outval)
+void vec_math_subtract(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = v1 - v2;
- outval = 0.0;
+ outvec = a - b;
}
-void vec_math_multiply(vec3 v1, vec3 v2, out vec3 outvec, out float outval)
+void vec_math_multiply(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = v1 * v2;
- outval = 0.0;
+ outvec = a * b;
}
-void vec_math_divide(vec3 v1, vec3 v2, out vec3 outvec, out float outval)
+void vec_math_divide(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = safe_divide(v1, v2);
- outval = 0.0;
+ outvec = safe_divide(a, b);
}
-void vec_math_cross(vec3 v1, vec3 v2, out vec3 outvec, out float outval)
+void vec_math_cross(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = cross(v1, v2);
- outval = 0.0;
+ outvec = cross(a, b);
}
-void vec_math_project(vec3 v1, vec3 v2, out vec3 outvec, out float outval)
+void vec_math_project(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- float lenSquared = dot(v2, v2);
- outvec = (lenSquared != 0.0) ? (dot(v1, v2) / lenSquared) * v2 : vec3(0.0);
- outval = 0.0;
+ float lenSquared = dot(b, b);
+ outvec = (lenSquared != 0.0) ? (dot(a, b) / lenSquared) * b : vec3(0.0);
}
-void vec_math_reflect(vec3 i, vec3 n, out vec3 outvec, out float outval)
+void vec_math_reflect(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = reflect(i, normalize(n));
- outval = 0.0;
+ outvec = reflect(a, normalize(b));
}
-void vec_math_average(vec3 v1, vec3 v2, out vec3 outvec, out float outval)
+void vec_math_average(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = normalize(v1 + v2);
- outval = 0.0;
+ outvec = normalize(a + b);
}
-void vec_math_dot(vec3 v1, vec3 v2, out vec3 outvec, out float outval)
+void vec_math_dot(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = vec3(0.0);
- outval = dot(v1, v2);
+ outval = dot(a, b);
}
-void vec_math_distance(vec3 v1, vec3 v2, out vec3 outvec, out float outval)
+void vec_math_distance(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = vec3(0.0);
- outval = distance(v1, v2);
+ outval = distance(a, b);
}
-void vec_math_length(vec3 v, out vec3 outvec, out float outval)
+void vec_math_length(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = vec3(0.0);
- outval = length(v);
+ outval = length(a);
}
-void vec_math_scale(vec3 v, vec3 temp, float scale, out vec3 outvec, out float outval)
+void vec_math_scale(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = v * scale;
- outval = 0.0;
+ outvec = a * scale;
}
-void vec_math_normalize(vec3 v, out vec3 outvec, out float outval)
+void vec_math_normalize(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = normalize(v);
- outval = 0.0;
+ outvec = normalize(a);
}
-void vec_math_snap(vec3 v1, vec3 v2, out vec3 outvec, out float outval)
+void vec_math_snap(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec.x = (v2.x != 0.0) ? floor(v1.x / v2.x) * v2.x : 0.0;
- outvec.y = (v2.y != 0.0) ? floor(v1.y / v2.y) * v2.y : 0.0;
- outvec.z = (v2.z != 0.0) ? floor(v1.z / v2.z) * v2.z : 0.0;
- outval = 0.0;
+ outvec.x = (b.x != 0.0) ? floor(a.x / b.x) * b.x : 0.0;
+ outvec.y = (b.y != 0.0) ? floor(a.y / b.y) * b.y : 0.0;
+ outvec.z = (b.z != 0.0) ? floor(a.z / b.z) * b.z : 0.0;
}
-void vec_math_modulo(vec3 v1, vec3 v2, out vec3 outvec, out float outval)
+void vec_math_modulo(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = mod(v1, v2);
- outval = 0.0;
+ outvec = mod(a, b);
}
-void vec_math_absolute(vec3 v, out vec3 outvec, out float outval)
+void vec_math_absolute(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = abs(v);
- outval = 0.0;
+ outvec = abs(a);
}
-void vec_math_minimum(vec3 v1, vec3 v2, out vec3 outvec, out float outval)
+void vec_math_minimum(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = min(v1, v2);
- outval = 0.0;
+ outvec = min(a, b);
}
-void vec_math_maximum(vec3 v1, vec3 v2, out vec3 outvec, out float outval)
+void vec_math_maximum(vec3 a, vec3 b, float scale, out vec3 outvec, out float outval)
{
- outvec = max(v1, v2);
- outval = 0.0;
+ outvec = max(a, b);
}
-void vec_math_mix(float strength, vec3 v1, vec3 v2, out vec3 outvec)
+void vec_math_mix(float strength, vec3 a, vec3 b, out vec3 outvec)
{
- outvec = strength * v1 + (1 - strength) * v2;
+ outvec = strength * a + (1 - strength) * b;
}
void vec_math_negate(vec3 v, out vec3 outv)
diff --git a/source/blender/nodes/shader/nodes/node_shader_vectMath.c b/source/blender/nodes/shader/nodes/node_shader_vectMath.c
index 11278fab9a3..85015b014cf 100644
--- a/source/blender/nodes/shader/nodes/node_shader_vectMath.c
+++ b/source/blender/nodes/shader/nodes/node_shader_vectMath.c
@@ -63,28 +63,7 @@ static int gpu_shader_vect_math(GPUMaterial *mat,
[NODE_VECTOR_MATH_MAXIMUM] = "vec_math_maximum",
};
- switch (node->custom1) {
- case NODE_VECTOR_MATH_LENGTH:
- case NODE_VECTOR_MATH_NORMALIZE:
- case NODE_VECTOR_MATH_ABSOLUTE: {
- GPUNodeStack tmp_in[2];
- memcpy(&tmp_in[0], &in[0], sizeof(GPUNodeStack));
- memcpy(&tmp_in[1], &in[3], sizeof(GPUNodeStack));
- GPU_stack_link(mat, node, names[node->custom1], tmp_in, out);
- break;
- }
- case NODE_VECTOR_MATH_SCALE: {
- GPU_stack_link(mat, node, names[node->custom1], in, out);
- break;
- }
- default: {
- GPUNodeStack tmp_in[3];
- memcpy(&tmp_in[0], &in[0], sizeof(GPUNodeStack));
- memcpy(&tmp_in[1], &in[1], sizeof(GPUNodeStack));
- memcpy(&tmp_in[2], &in[3], sizeof(GPUNodeStack));
- GPU_stack_link(mat, node, names[node->custom1], tmp_in, out);
- }
- }
+ GPU_stack_link(mat, node, names[node->custom1], in, out);
return true;
}
More information about the Bf-blender-cvs
mailing list