diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl index e8279241d1bb523663cbfdf2cb86721f34d66f50..d071801e2d33449e11e37adbe768701446f81971 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl @@ -67,20 +67,16 @@ vec4 getPosition(vec2 pos_screen) #ifdef SINGLE_FP_ONLY vec2 encode_normal(vec3 n) { - float f = sqrt(2 * n.z + 2); - return (n.xy / vec2(f)) + vec2(0.5f); + vec2 sn; + sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f); } vec3 decode_normal (vec2 enc) { - vec2 fenc = enc - 0.5f; - float f = dot(fenc,fenc); - f = clamp(f,0.0f,1.0f); - float g = sqrt(1-f); - vec3 n; - n.xy = fenc*g; - n.z = 1.0f - (f * 0.5f); - return normalize(n); + vec3 n; + n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f); + n.z = sqrt(1.0f - dot(n.xy,n.xy)); + return n; } #else vec2 encode_normal(vec3 n) diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl index 70cc88420942020c1b0c5cff106c2f7464b6cb12..f58c69deaad21e89f9fb2605046de9f593f6a3d8 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl @@ -429,20 +429,16 @@ VARYING vec2 vary_texcoord0; #ifdef SINGLE_FP_ONLY vec2 encode_normal(vec3 n) { - float f = sqrt(2 * n.z + 2); - return (n.xy / vec2(f)) + vec2(0.5f); + vec2 sn; + sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f); } vec3 decode_normal (vec2 enc) { - vec2 fenc = enc - 0.5f; - float f = dot(fenc,fenc); - f = clamp(f,0.0f,1.0f); - float g = sqrt(1-f); - vec3 n; - n.xy = fenc*g; - n.z = 1.0f - (f * 0.5f); - return normalize(n); + vec3 n; + n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f); + n.z = sqrt(1.0f - dot(n.xy,n.xy)); + return n; } #else vec2 encode_normal(vec3 n) @@ -692,13 +688,6 @@ void main() #else frag_data[0] = final_color; - -#ifdef SINGLE_FP_ONLY - // "Not so HD" range on older cards; make it fit! - // - final_specular = final_specular * vec4(0.25f); -#endif - frag_data[1] = final_specular; // XYZ = Specular color. W = Specular exponent. frag_data[2] = final_normal; // XY = Normal. Z = Env. intensity. #endif diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl index 0d86840c1c885b4ca2381935087961ad539e421f..e27250e13e34705b7149d741cdb0421467875cb7 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl @@ -59,20 +59,16 @@ uniform mat4 inv_proj; #ifdef SINGLE_FP_ONLY vec2 encode_normal(vec3 n) { - float f = sqrt(2 * n.z + 2); - return (n.xy / vec2(f)) + vec2(0.5f); + vec2 sn; + sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f); } vec3 decode_normal (vec2 enc) { - vec2 fenc = enc - 0.5f; - float f = dot(fenc,fenc); - f = clamp(f,0.0f,1.0f); - float g = sqrt(1-f); - vec3 n; - n.xy = fenc*g; - n.z = 1.0f - (f * 0.5f); - return normalize(n); + vec3 n; + n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f); + n.z = sqrt(1.0f - dot(n.xy,n.xy)); + return n; } #else vec2 encode_normal(vec3 n) diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl index f4d174729d5e99fea44d7f31fef9f9c37b925758..ca3fcdcadb89ceba13a106ca0b6cc14daa23dcc5 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl @@ -70,20 +70,16 @@ uniform mat4 inv_proj; #ifdef SINGLE_FP_ONLY vec2 encode_normal(vec3 n) { - float f = sqrt(2 * n.z + 2); - return (n.xy / vec2(f)) + vec2(0.5f); + vec2 sn; + sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f); } vec3 decode_normal (vec2 enc) { - vec2 fenc = enc - 0.5f; - float f = dot(fenc,fenc); - f = clamp(f,0.0f,1.0f); - float g = sqrt(1-f); - vec3 n; - n.xy = fenc*g; - n.z = 1.0f - (f * 0.5f); - return normalize(n); + vec3 n; + n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f); + n.z = sqrt(1.0f - dot(n.xy,n.xy)); + return n; } #else vec2 encode_normal(vec3 n) diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl index 1313ba582ff91011a69d915616d120f45ad1c6c1..850988a6045d3028ed34b51f955809801ae2cbbc 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl @@ -57,20 +57,16 @@ uniform vec4 viewport; #ifdef SINGLE_FP_ONLY vec2 encode_normal(vec3 n) { - float f = sqrt(2 * n.z + 2); - return (n.xy / vec2(f)) + vec2(0.5f); + vec2 sn; + sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f); } vec3 decode_normal (vec2 enc) { - vec2 fenc = enc - 0.5f; - float f = dot(fenc,fenc); - f = clamp(f,0.0f,1.0f); - float g = sqrt(1-f); - vec3 n; - n.xy = fenc*g; - n.z = 1.0f - (f * 0.5f); - return normalize(n); + vec3 n; + n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f); + n.z = sqrt(1.0f - dot(n.xy,n.xy)); + return n; } #else vec2 encode_normal(vec3 n) diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index 3e3e0a5a5d533fee20f9efa8e0532a01732cd5f5..e94201df416f2684ccf833e4184a7582fcc45cf7 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -79,16 +79,18 @@ uniform mat4 inv_proj; uniform vec2 screen_res; #ifdef SINGLE_FP_ONLY +vec2 encode_normal(vec3 n) +{ + vec2 sn; + sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f); +} + vec3 decode_normal (vec2 enc) { - vec2 fenc = enc - 0.5f; - float f = dot(fenc,fenc); - f = clamp(f,0.0f,1.0f); - float g = sqrt(1-f); - vec3 n; - n.xy = fenc*g; - n.z = 1-f/2; - return normalize(n); + vec3 n; + n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f); + n.z = sqrt(1.0f - dot(n.xy,n.xy)); + return n; } #else vec3 decode_normal (vec2 enc) diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl index adfe012e4da8b11574c4be54a1410c47e541f8a7..879953b4761ada4700e279ede7176cf11ec8ae80 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl @@ -68,20 +68,16 @@ uniform mat4 inv_proj; #ifdef SINGLE_FP_ONLY vec2 encode_normal(vec3 n) { - float f = sqrt(2 * n.z + 2); - return (n.xy / vec2(f)) + vec2(0.5f); + vec2 sn; + sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f); } vec3 decode_normal (vec2 enc) { - vec2 fenc = enc - 0.5f; - float f = dot(fenc,fenc); - f = clamp(f,0.0f,1.0f); - float g = sqrt(1-f); - vec3 n; - n.xy = fenc*g; - n.z = 1.0f - (f * 0.5f); - return normalize(n); + vec3 n; + n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f); + n.z = sqrt(1.0f - dot(n.xy,n.xy)); + return n; } #else vec2 encode_normal(vec3 n) diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl index 7fcbb1aa8596eb73bac9c4afbeac2674404b8937..6d3b3e23de38e88c6ba17c399d0c3a1617627a1e 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl @@ -52,20 +52,16 @@ uniform vec2 screen_res; #ifdef SINGLE_FP_ONLY vec2 encode_normal(vec3 n) { - float f = sqrt(2 * n.z + 2); - return (n.xy / vec2(f)) + vec2(0.5f); + vec2 sn; + sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f); } vec3 decode_normal (vec2 enc) { - vec2 fenc = enc - 0.5f; - float f = dot(fenc,fenc); - f = clamp(f,0.0f,1.0f); - float g = sqrt(1-f); - vec3 n; - n.xy = fenc*g; - n.z = 1.0f - (f * 0.5f); - return normalize(n); + vec3 n; + n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f); + n.z = sqrt(1.0f - dot(n.xy,n.xy)); + return n; } #else vec2 encode_normal(vec3 n) diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl index f7023be1503ca03ebc0236f6bfcc0a6606bef5de..db60c8ea514df3da5edeccb88b13b8bc2277eb2a 100755 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl @@ -71,20 +71,16 @@ uniform mat4 inv_proj; #ifdef SINGLE_FP_ONLY vec2 encode_normal(vec3 n) { - float f = sqrt(2 * n.z + 2); - return (n.xy / vec2(f)) + vec2(0.5f); + vec2 sn; + sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f); } vec3 decode_normal (vec2 enc) { - vec2 fenc = enc - 0.5f; - float f = dot(fenc,fenc); - f = clamp(f,0.0f,1.0f); - float g = sqrt(1-f); - vec3 n; - n.xy = fenc*g; - n.z = 1.0f - (f * 0.5f); - return normalize(n); + vec3 n; + n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f); + n.z = sqrt(1.0f - dot(n.xy,n.xy)); + return n; } #else vec2 encode_normal(vec3 n) diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 6e3564127769d17d30a4bf728727e2c74a3f3637..08b456dd967400c43e0ce5e7c7748e252f758fe3 100755 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -81,20 +81,16 @@ uniform vec2 screen_res; #ifdef SINGLE_FP_ONLY vec2 encode_normal(vec3 n) { - float f = sqrt(2 * n.z + 2); - return (n.xy / vec2(f)) + vec2(0.5f); + vec2 sn; + sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f); } vec3 decode_normal (vec2 enc) { - vec2 fenc = enc - 0.5f; - float f = dot(fenc,fenc); - f = clamp(f,0.0f,1.0f); - float g = sqrt(1-f); - vec3 n; - n.xy = fenc*g; - n.z = 1.0f - (f * 0.5f); - return normalize(n); + vec3 n; + n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f); + n.z = sqrt(1.0f - dot(n.xy,n.xy)); + return n; } #else vec2 encode_normal(vec3 n) diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl index 0436c807102c114434f7dc4a26e8254e54b2002f..4fc9a6ad87e51bc7eb964749d2e3cb6b57f1f300 100755 --- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl @@ -71,20 +71,16 @@ uniform mat4 inv_proj; #ifdef SINGLE_FP_ONLY vec2 encode_normal(vec3 n) { - float f = sqrt(2 * n.z + 2); - return (n.xy / vec2(f)) + vec2(0.5f); + vec2 sn; + sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f); } vec3 decode_normal (vec2 enc) { - vec2 fenc = enc - 0.5f; - float f = dot(fenc,fenc); - f = clamp(f,0.0f,1.0f); - float g = sqrt(1-f); - vec3 n; - n.xy = fenc*g; - n.z = 1.0f - (f * 0.5f); - return normalize(n); + vec3 n; + n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f); + n.z = sqrt(1.0f - dot(n.xy,n.xy)); + return n; } #else vec2 encode_normal(vec3 n) diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl index 640701572d932b01bf3040bea1e45714f34ec2c4..c1ed32f7e7c74b3bb51ac54d793af9e326f5417c 100755 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl @@ -68,20 +68,16 @@ uniform float spot_shadow_offset; #ifdef SINGLE_FP_ONLY vec2 encode_normal(vec3 n) { - float f = sqrt(2 * n.z + 2); - return (n.xy / vec2(f)) + vec2(0.5f); + vec2 sn; + sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f); } vec3 decode_normal (vec2 enc) { - vec2 fenc = enc - 0.5f; - float f = dot(fenc,fenc); - f = clamp(f,0.0f,1.0f); - float g = sqrt(1-f); - vec3 n; - n.xy = fenc*g; - n.z = 1.0f - (f * 0.5f); - return normalize(n); + vec3 n; + n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f); + n.z = sqrt(1.0f - dot(n.xy,n.xy)); + return n; } #else vec2 encode_normal(vec3 n) diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl index 6db26cec4cb137230965629a6fb59196bef9fdd6..8a029109a676f896960c215af8737e7e88c732e6 100755 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl @@ -69,20 +69,16 @@ uniform float spot_shadow_offset; #ifdef SINGLE_FP_ONLY vec2 encode_normal(vec3 n) { - float f = sqrt(2 * n.z + 2); - return (n.xy / vec2(f)) + vec2(0.5f); + vec2 sn; + sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f); } vec3 decode_normal (vec2 enc) { - vec2 fenc = enc - 0.5f; - float f = dot(fenc,fenc); - f = clamp(f,0.0f,1.0f); - float g = sqrt(1-f); - vec3 n; - n.xy = fenc*g; - n.z = 1.0f - (f * 0.5f); - return normalize(n); + vec3 n; + n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f); + n.z = sqrt(1.0f - dot(n.xy,n.xy)); + return n; } #else vec2 encode_normal(vec3 n)