aboutsummaryrefslogtreecommitdiff
path: root/client/shaders/shadow_shaders/pass1_trans_fragment.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'client/shaders/shadow_shaders/pass1_trans_fragment.glsl')
-rw-r--r--client/shaders/shadow_shaders/pass1_trans_fragment.glsl7
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);