diff options
author | x2048 <codeforsmile@gmail.com> | 2021-10-01 16:21:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-01 16:21:53 +0200 |
commit | 982e03f60dc95cb2605a4a1c6520b604f85dd1d0 (patch) | |
tree | 748a4763dea169f7e983a602a1fc7d2e031c9849 /client/shaders/shadow_shaders/pass1_trans_fragment.glsl | |
parent | 21113ad4105dd3fb181b3d0638b907af94a352ab (diff) | |
download | hax-minetest-server-982e03f60dc95cb2605a4a1c6520b604f85dd1d0.tar.gz hax-minetest-server-982e03f60dc95cb2605a4a1c6520b604f85dd1d0.zip |
Improvements to colored shadows (#11516)
Diffstat (limited to 'client/shaders/shadow_shaders/pass1_trans_fragment.glsl')
-rw-r--r-- | client/shaders/shadow_shaders/pass1_trans_fragment.glsl | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/client/shaders/shadow_shaders/pass1_trans_fragment.glsl b/client/shaders/shadow_shaders/pass1_trans_fragment.glsl index 9f9e5be8c..032cd9379 100644 --- a/client/shaders/shadow_shaders/pass1_trans_fragment.glsl +++ b/client/shaders/shadow_shaders/pass1_trans_fragment.glsl @@ -2,6 +2,8 @@ uniform sampler2D ColorMapSampler; varying vec4 tPos; #ifdef COLORED_SHADOWS +varying vec3 varColor; + // c_precision of 128 fits within 7 base-10 digits const float c_precision = 128.0; const float c_precisionp1 = c_precision + 1.0; @@ -30,7 +32,10 @@ void main() //col.rgb = col.a == 1.0 ? vec3(1.0) : col.rgb; #ifdef COLORED_SHADOWS - float packedColor = packColor(mix(col.rgb, black, col.a)); + col.rgb *= varColor.rgb; + // alpha 0.0 results in all-white, 0.5 means full color, 1.0 means all black + // resulting color is used as a factor in the final shader + float packedColor = packColor(mix(mix(vec3(1.0), col.rgb, 2.0 * clamp(col.a, 0.0, 0.5)), black, 2.0 * clamp(col.a - 0.5, 0.0, 0.5))); gl_FragColor = vec4(depth, packedColor, 0.0,1.0); #else gl_FragColor = vec4(depth, 0.0, 0.0, 1.0); |