diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-07-03 13:29:48 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-07-03 14:36:04 +0300 |
commit | 967b84534a746ea2f5b37ad0c80ad680362b571a (patch) | |
tree | 230a97a3c1ff5cc79455ae3b42cc697f0015000f /source/blender/draw/engines/workbench/shaders | |
parent | e30f25ba22efae0c749c3dcecf6fb4ecf60e853e (diff) |
Workbench: Fix wrong shading shadoow direction.
Diffstat (limited to 'source/blender/draw/engines/workbench/shaders')
3 files changed, 3 insertions, 6 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl b/source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl index 99bacea4b27..eadc5e4b0d0 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl @@ -8,7 +8,7 @@ struct WorldData { vec4 background_color_low; vec4 background_color_high; vec4 object_outline_color; - vec4 light_direction_vs; + vec4 shadow_direction_vs; LightData lights[3]; int num_lights; int matcap_orientation; diff --git a/source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl index c72df6b677d..bf856fbb212 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl @@ -106,12 +106,10 @@ void main() #endif #ifdef V3D_SHADING_SHADOW - float light_factor = -dot(normal_viewport, world_data.lights[0].light_direction_vs.xyz); + float light_factor = -dot(normal_viewport, world_data.shadow_direction_vs.xyz); /* The step function might be ok for meshes but it's * clearly not the case for hairs. Do smoothstep in this case. */ - float shadow_mix = (diffuse_color.a == 1.0 || diffuse_color.a == 0.0) - ? step(-shadowShift, -light_factor) - : smoothstep(1.0, shadowShift, light_factor); + float shadow_mix = smoothstep(1.0, shadowShift, light_factor); float light_multiplier = mix(lightMultiplier, shadowMultiplier, shadow_mix); #else /* V3D_SHADING_SHADOW */ diff --git a/source/blender/draw/engines/workbench/shaders/workbench_world_light_lib.glsl b/source/blender/draw/engines/workbench/shaders/workbench_world_light_lib.glsl index 3eda4455487..82d0d1fcd02 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_world_light_lib.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_world_light_lib.glsl @@ -89,7 +89,6 @@ vec3 get_world_specular_light(vec4 specular_data, LightData light_data, vec3 N, vec3 get_world_specular_lights(WorldData world_data, vec4 specular_data, vec3 N, vec3 I) { vec3 specular_light = vec3(0.0); - specular_light += get_world_specular_light(specular_data, world_data.lights[0], N, I); for (int i = 0 ; i < world_data.num_lights ; i ++) { specular_light += get_world_specular_light(specular_data, world_data.lights[i], N, I); } |