diff options
author | Jacek Antonelli | 2009-04-30 13:04:20 -0500 |
---|---|---|
committer | Jacek Antonelli | 2009-04-30 13:07:16 -0500 |
commit | ca8149ca6d157eb4b5fc8ba0e5ba3a6e56f72e7e (patch) | |
tree | 8348301d0ac44a524f1819b777686bf086907d76 /linden/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl | |
parent | Second Life viewer sources 1.22.11 (diff) | |
download | meta-impy-ca8149ca6d157eb4b5fc8ba0e5ba3a6e56f72e7e.zip meta-impy-ca8149ca6d157eb4b5fc8ba0e5ba3a6e56f72e7e.tar.gz meta-impy-ca8149ca6d157eb4b5fc8ba0e5ba3a6e56f72e7e.tar.bz2 meta-impy-ca8149ca6d157eb4b5fc8ba0e5ba3a6e56f72e7e.tar.xz |
Second Life viewer sources 1.23.0-RC
Diffstat (limited to 'linden/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl')
-rw-r--r-- | linden/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/linden/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl b/linden/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl new file mode 100644 index 0000000..6c94f5c --- /dev/null +++ b/linden/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaF.glsl | |||
@@ -0,0 +1,68 @@ | |||
1 | /** | ||
2 | * @file avatarAlphaF.glsl | ||
3 | * | ||
4 | * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. | ||
5 | * $License$ | ||
6 | */ | ||
7 | |||
8 | uniform sampler2D diffuseMap; | ||
9 | uniform sampler2DShadow shadowMap0; | ||
10 | uniform sampler2DShadow shadowMap1; | ||
11 | uniform sampler2DShadow shadowMap2; | ||
12 | uniform sampler2DShadow shadowMap3; | ||
13 | uniform sampler2D noiseMap; | ||
14 | |||
15 | uniform mat4 shadow_matrix[4]; | ||
16 | uniform vec4 shadow_clip; | ||
17 | |||
18 | vec3 atmosLighting(vec3 light); | ||
19 | vec3 scaleSoftClip(vec3 light); | ||
20 | |||
21 | varying vec3 vary_ambient; | ||
22 | varying vec3 vary_directional; | ||
23 | varying vec4 vary_position; | ||
24 | varying vec3 vary_normal; | ||
25 | |||
26 | void main() | ||
27 | { | ||
28 | float shadow = 1.0; | ||
29 | vec4 pos = vary_position; | ||
30 | vec3 norm = normalize(vary_normal); | ||
31 | |||
32 | vec3 nz = texture2D(noiseMap, gl_FragCoord.xy/128.0).xyz; | ||
33 | |||
34 | if (pos.z > -shadow_clip.w) | ||
35 | { | ||
36 | |||
37 | if (pos.z < -shadow_clip.z) | ||
38 | { | ||
39 | vec4 lpos = shadow_matrix[3]*pos; | ||
40 | shadow = shadow2DProj(shadowMap3, lpos).x; | ||
41 | } | ||
42 | else if (pos.z < -shadow_clip.y) | ||
43 | { | ||
44 | vec4 lpos = shadow_matrix[2]*pos; | ||
45 | shadow = shadow2DProj(shadowMap2, lpos).x; | ||
46 | } | ||
47 | else if (pos.z < -shadow_clip.x) | ||
48 | { | ||
49 | vec4 lpos = shadow_matrix[1]*pos; | ||
50 | shadow = shadow2DProj(shadowMap1, lpos).x; | ||
51 | } | ||
52 | else | ||
53 | { | ||
54 | vec4 lpos = shadow_matrix[0]*pos; | ||
55 | shadow = shadow2DProj(shadowMap0, lpos).x; | ||
56 | } | ||
57 | } | ||
58 | |||
59 | |||
60 | vec4 col = vec4(vary_ambient + vary_directional*shadow, gl_Color.a); | ||
61 | vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * col; | ||
62 | |||
63 | color.rgb = atmosLighting(color.rgb); | ||
64 | |||
65 | color.rgb = scaleSoftClip(color.rgb); | ||
66 | |||
67 | gl_FragColor = color; | ||
68 | } | ||