summaryrefslogtreecommitdiff
path: root/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl')
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl68
1 files changed, 68 insertions, 0 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl
new file mode 100644
index 0000000000..82ce6d7377
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl
@@ -0,0 +1,68 @@
+/**
+ * @file avatarAlphaF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+
+uniform sampler2D diffuseMap;
+uniform sampler2DShadow shadowMap0;
+uniform sampler2DShadow shadowMap1;
+uniform sampler2DShadow shadowMap2;
+uniform sampler2DShadow shadowMap3;
+uniform sampler2D noiseMap;
+
+uniform mat4 shadow_matrix[6];
+uniform vec4 shadow_clip;
+
+vec3 atmosLighting(vec3 light);
+vec3 scaleSoftClip(vec3 light);
+
+varying vec3 vary_ambient;
+varying vec3 vary_directional;
+varying vec4 vary_position;
+varying vec3 vary_normal;
+
+void main()
+{
+ float shadow = 1.0;
+ vec4 pos = vary_position;
+ vec3 norm = normalize(vary_normal);
+
+ vec3 nz = texture2D(noiseMap, gl_FragCoord.xy/128.0).xyz;
+
+ if (pos.z > -shadow_clip.w)
+ {
+
+ if (pos.z < -shadow_clip.z)
+ {
+ vec4 lpos = shadow_matrix[3]*pos;
+ shadow = shadow2DProj(shadowMap3, lpos).x;
+ }
+ else if (pos.z < -shadow_clip.y)
+ {
+ vec4 lpos = shadow_matrix[2]*pos;
+ shadow = shadow2DProj(shadowMap2, lpos).x;
+ }
+ else if (pos.z < -shadow_clip.x)
+ {
+ vec4 lpos = shadow_matrix[1]*pos;
+ shadow = shadow2DProj(shadowMap1, lpos).x;
+ }
+ else
+ {
+ vec4 lpos = shadow_matrix[0]*pos;
+ shadow = shadow2DProj(shadowMap0, lpos).x;
+ }
+ }
+
+
+ vec4 col = vec4(vary_ambient + vary_directional*shadow, gl_Color.a);
+ vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * col;
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
+}