diff options
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/environment')
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/environment/srgbF.glsl | 20 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl | 4 | 
2 files changed, 22 insertions, 2 deletions
diff --git a/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl b/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl index d7f6d20547..bf8737615f 100644 --- a/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl @@ -41,6 +41,26 @@ vec3 srgb_to_linear(vec3 cs)  } + +vec4 srgb_to_linear4(vec4 cs) +{ +    vec4 low_range = cs / vec4(12.92); +    vec4 high_range = pow((cs+vec4(0.055))/vec4(1.055), vec4(2.4)); +    bvec4 lte = lessThanEqual(cs,vec4(0.04045)); + +#ifdef OLD_SELECT +    vec4 result; +    result.r = lte.r ? low_range.r : high_range.r; +    result.g = lte.g ? low_range.g : high_range.g; +    result.b = lte.b ? low_range.b : high_range.b; +    result.a = lte.a ? low_range.a : high_range.a; +    return result; +#else +    return mix(high_range, low_range, lte); +#endif + +} +  vec3 linear_to_srgb(vec3 cl)  {      cl = clamp(cl, vec3(0), vec3(1)); diff --git a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl index 20b61e9302..44a979e565 100644 --- a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl @@ -66,11 +66,11 @@ vec4 getWaterFogViewNoClip(vec3 pos)      float t2 = kd + ks * es;      float t3 = pow(F, t2*l) - 1.0; -    float L = min(t1/t2*t3, 1.0); +    float L = pow(min(t1/t2*t3, 1.0), 1.0/1.7);      float D = pow(0.98, l*kd); -    return vec4(srgb_to_linear(kc.rgb*L), D); +    return vec4(srgb_to_linear(kc.rgb)*L, D);  }  vec4 getWaterFogView(vec3 pos)  | 
