From 8134f3f0a6bb0ca7bb6c002a7ce0b4c91342a6d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 29 Jan 2019 03:46:57 +0100 Subject: Workbench: Add "Shadow" factor to Xray This just maintain more parity accross the 2 visuals. Note that this is not "real shadowing" just the facing factor shadowing. --- .../shaders/workbench_forward_transparent_accum_frag.glsl | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl') diff --git a/source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl index 93da32dd765..b3642b7beb3 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl @@ -14,6 +14,11 @@ uniform vec3 materialDiffuseColor; uniform vec3 materialSpecularColor; uniform float materialRoughness; +uniform float shadowMultiplier = 0.5; +uniform float lightMultiplier = 1.0; +uniform float shadowShift = 0.1; +uniform float shadowFocus = 1.0; + #ifdef NORMAL_VIEWPORT_PASS_ENABLED in vec3 normal_viewport; #endif /* NORMAL_VIEWPORT_PASS_ENABLED */ @@ -67,6 +72,12 @@ void main() nor, I_vs); #endif +#ifdef V3D_SHADING_SHADOW + float light_factor = -dot(nor, world_data.shadow_direction_vs.xyz); + float shadow_mix = smoothstep(shadowFocus, shadowShift, light_factor); + shaded_color *= mix(lightMultiplier, shadowMultiplier, shadow_mix); +#endif + /* Based on : * McGuire and Bavoil, Weighted Blended Order-Independent Transparency, Journal of * Computer Graphics Techniques (JCGT), vol. 2, no. 2, 122–141, 2013 -- cgit v1.2.3