diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-11-06 22:50:37 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-11-07 02:19:14 +0300 |
commit | c3a0af736a4f6db5b3310cca947bfb103fd2cde2 (patch) | |
tree | b4fd009b59fcaa91ac31b6287a2dd7e615b74bc3 /source | |
parent | 57b4e122fc9a1e8d0cb9160ab8652c654af76194 (diff) |
Eevee: Make Normal node interactive
Before it was triggering shader recompilation. Include small cleanup/opti.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_material.glsl | 12 | ||||
-rw-r--r-- | source/blender/nodes/shader/nodes/node_shader_normal.c | 2 |
2 files changed, 4 insertions, 10 deletions
diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl index 06e797db8c4..4039b20a082 100644 --- a/source/blender/gpu/shaders/gpu_shader_material.glsl +++ b/source/blender/gpu/shaders/gpu_shader_material.glsl @@ -468,16 +468,10 @@ void invert_z(vec3 v, out vec3 outv) outv = v; } -void normal(vec3 dir, vec3 nor, out vec3 outnor, out float outdot) +void normal_new_shading(vec3 nor, vec3 dir, out vec3 outnor, out float outdot) { - outnor = nor; - outdot = -dot(dir, nor); -} - -void normal_new_shading(vec3 dir, vec3 nor, out vec3 outnor, out float outdot) -{ - outnor = normalize(nor); - outdot = dot(normalize(dir), nor); + outnor = dir; + outdot = dot(normalize(nor), dir); } void curves_vec(float fac, vec3 vec, sampler1DArray curvemap, float layer, out vec3 outvec) diff --git a/source/blender/nodes/shader/nodes/node_shader_normal.c b/source/blender/nodes/shader/nodes/node_shader_normal.c index 13335c86382..121cb9cc1a5 100644 --- a/source/blender/nodes/shader/nodes/node_shader_normal.c +++ b/source/blender/nodes/shader/nodes/node_shader_normal.c @@ -60,7 +60,7 @@ static void node_shader_exec_normal(void *UNUSED(data), int UNUSED(thread), bNod static int gpu_shader_normal(GPUMaterial *mat, bNode *node, bNodeExecData *UNUSED(execdata), GPUNodeStack *in, GPUNodeStack *out) { - GPUNodeLink *vec = GPU_constant(out[0].vec); + GPUNodeLink *vec = GPU_uniform(out[0].vec); return GPU_stack_link(mat, node, "normal_new_shading", in, out, vec); } |