diff options
author | Oz Linden <oz@lindenlab.com> | 2011-06-22 11:45:43 -0400 |
---|---|---|
committer | Oz Linden <oz@lindenlab.com> | 2011-06-22 11:45:43 -0400 |
commit | 13de92740e55e8ba5111e1cd16e239ebeda3a578 (patch) | |
tree | 5da5b829085d2a19422ce1f2f987b395080369cc /indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl | |
parent | ab431d1774d5b282836a3327dd0bfa8b3b91632b (diff) | |
parent | 9a2e35f7cab1ba119e9887cd307f021fc6ae0bd5 (diff) |
merge latest viewer-development
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl')
-rw-r--r-- | indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl new file mode 100644 index 0000000000..9267a8585d --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl @@ -0,0 +1,38 @@ +/** + * @file glowExtractF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + + + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +uniform sampler2DMS diffuseMap; +uniform float minLuminance; +uniform float maxExtractAlpha; +uniform vec3 lumWeights; +uniform vec3 warmthWeights; +uniform float warmthAmount; + +void main() +{ + ivec2 itc = ivec2(gl_TexCoord[0].xy); + vec4 fcol = vec4(0,0,0,0); + + for (int i = 0; i < samples; i++) + { + vec4 col = texelFetch(diffuseMap, itc, i); + + /// CALCULATING LUMINANCE (Using NTSC lum weights) + /// http://en.wikipedia.org/wiki/Luma_%28video%29 + float lum = smoothstep(minLuminance, minLuminance+1.0, dot(col.rgb, lumWeights ) ); + float warmth = smoothstep(minLuminance, minLuminance+1.0, max(col.r * warmthWeights.r, max(col.g * warmthWeights.g, col.b * warmthWeights.b)) ); + + fcol += vec4(col.rgb, max(col.a, mix(lum, warmth, warmthAmount) * maxExtractAlpha)); + } + + gl_FragColor = fcol/samples; +} |