diff options
Diffstat (limited to 'indra/newview/app_settings/shaders')
20 files changed, 68 insertions, 93 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/aoUtil.glsl b/indra/newview/app_settings/shaders/class1/deferred/aoUtil.glsl index ce018623a8..1a065daf89 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/aoUtil.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/aoUtil.glsl @@ -78,10 +78,10 @@ float calcAmbientOcclusion(vec4 pos, vec3 norm, vec2 pos_screen)  {      float ret = 1.0;      vec3 pos_world = pos.xyz; -    vec2 noise_reflect = texture(noiseMap, pos_screen.xy * (screen_res / 128)).xy; +    vec2 noise_reflect = texture(noiseMap, pos_screen.xy * (screen_res / 128.0)).xy;      float angle_hidden = 0.0; -    float points = 0; +    float points = 0.0;      float scale = min(ssao_radius / -pos_world.z, ssao_max_radius); diff --git a/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl b/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl index dba9c46332..63ab0b9b38 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl @@ -265,7 +265,7 @@ vec4 texture2DLodSpecular(vec2 tc, float lod)      vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));      float det = min(lod/(proj_lod*0.5), 1.0);      float d = min(dist.x, dist.y); -    d *= min(1, d * (proj_lod - lod)); // BUG? extra factor compared to diffuse causes N repeats +    d *= min(1.0, d * (proj_lod - lod)); // BUG? extra factor compared to diffuse causes N repeats      float edge = 0.25*det;      ret *= clamp(d/edge, 0.0, 1.0); @@ -383,7 +383,7 @@ void pbrIbl(vec3 diffuseColor,              out vec3 specularOut)  {      // retrieve a scale and bias to F0. See [1], Figure 3 -    vec2 brdf = BRDF(clamp(nv, 0, 1), 1.0-perceptualRough); +    vec2 brdf = BRDF(clamp(nv, 0.0, 1.0), 1.0-perceptualRough);      vec3 diffuseLight = irradiance;      vec3 specularLight = radiance; @@ -438,9 +438,10 @@ float geometricOcclusion(PBRInfo pbrInputs)      float NdotL = pbrInputs.NdotL;      float NdotV = pbrInputs.NdotV;      float r = pbrInputs.alphaRoughness; +    float r2 = r * r; -    float attenuationL = 2.0 * NdotL / (NdotL + sqrt(r * r + (1.0 - r * r) * (NdotL * NdotL))); -    float attenuationV = 2.0 * NdotV / (NdotV + sqrt(r * r + (1.0 - r * r) * (NdotV * NdotV))); +    float attenuationL = 2.0 * NdotL / (NdotL + sqrt(r2 + (1.0 - r2) * (NdotL * NdotL))); +    float attenuationV = 2.0 * NdotV / (NdotV + sqrt(r2 + (1.0 - r2) * (NdotV * NdotV)));      return attenuationL * attenuationV;  } @@ -625,24 +626,11 @@ vec3 pbrBaseLight(vec3 diffuseColor, vec3 specularColor, float metallic, vec3 v,  uniform vec4 waterPlane;  uniform float waterSign; -// discard if given position in eye space is on the wrong side of the waterPlane according to waterSign  void waterClip(vec3 pos)  { -    // TODO: make this less branchy -    if (waterSign > 0) +    if (((dot(pos.xyz, waterPlane.xyz) + waterPlane.w) * waterSign) < 0.0)      { -        if ((dot(pos.xyz, waterPlane.xyz) + waterPlane.w) < 0.0) -        { -            discard; -        } -    } -    else -    { -        if ((dot(pos.xyz, waterPlane.xyz) + waterPlane.w) > 0.0) -        { -            discard; -        } +        discard;      } -  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/globalF.glsl b/indra/newview/app_settings/shaders/class1/deferred/globalF.glsl index 2ed4ba3163..9060d358cf 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/globalF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/globalF.glsl @@ -34,7 +34,7 @@ uniform float clipSign;  void mirrorClip(vec3 pos)  { -    if (mirror_flag > 0) +    if (mirror_flag > 0.0)      {          if ((dot(pos.xyz, clipPlane.xyz) + clipPlane.w) < 0.0)          { diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl index 4acab159cb..4331418b33 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl @@ -37,14 +37,10 @@ uniform sampler2D emissiveRect;  uniform sampler2D normalMap;  uniform float diffuse_luminance_scale; -float lum(vec3 col) -{ -    vec3 l = vec3(0.2126, 0.7152, 0.0722); -    return dot(l, col); -}  void main()  { +    const vec3 l = vec3(0.2126, 0.7152, 0.0722);      vec2 tc = vary_fragcoord*0.6+0.2;      tc.y -= 0.1; // HACK - nudge exposure sample down a little bit to favor ground over sky      vec3 c = texture(diffuseRect, tc).rgb; @@ -62,7 +58,7 @@ void main()      c += texture(emissiveRect, tc).rgb; -    float L = lum(c); +    float L = dot(l, c);      frag_color = vec4(max(L, 0.0));  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/pbrterrainUtilF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pbrterrainUtilF.glsl index dc43007dca..fb4b139662 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pbrterrainUtilF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pbrterrainUtilF.glsl @@ -297,7 +297,7 @@ vec3 _t_normal_post_1(vec3 vNt0, float sign_or_zero)      sign = (2.0*sign) + 1.0;      sign /= abs(sign);      // If the sign is negative, rotate normal by 180 degrees -    vNt1.xy = (min(0, sign) * vNt1.xy) + (min(0, -sign) * -vNt1.xy); +    vNt1.xy = (min(0.0, sign) * vNt1.xy) + (min(0.0, -sign) * -vNt1.xy);      return vNt1;  } diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl index 72eda80716..bfb592be9b 100644 --- a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl +++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl @@ -49,7 +49,7 @@ void main()      float warmth = smoothstep(minLuminance, minLuminance+1.0, max(col.r * warmthWeights.r, max(col.g * warmthWeights.g, col.b * warmthWeights.b)) );  #if HAS_NOISE -    float TRUE_NOISE_RES = 128; // See mTrueNoiseMap +    float TRUE_NOISE_RES = 128.0; // See mTrueNoiseMap      // *NOTE: Usually this is vary_fragcoord not vary_texcoord0, but glow extraction is in screen space      vec3 glow_noise = texture(glowNoiseMap, vary_texcoord0.xy * (screen_res / TRUE_NOISE_RES)).xyz;      // Dithering. Reduces banding effects in the reduced precision glow buffer. diff --git a/indra/newview/app_settings/shaders/class1/interface/gaussianF.glsl b/indra/newview/app_settings/shaders/class1/interface/gaussianF.glsl index 09eb7a6a6a..82f32da048 100644 --- a/indra/newview/app_settings/shaders/class1/interface/gaussianF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/gaussianF.glsl @@ -45,7 +45,7 @@ void main()      for (int i = 0; i < 9; ++i)      { -        vec2 tc = vary_texcoord0 + (i-4)*direction*resScale; +        vec2 tc = vary_texcoord0 + float(i-4)*direction*resScale;          col += texture(diffuseRect, tc).rgb * w[i];      } diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleColorF.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleColorF.glsl index dea76da5a5..30d70122cb 100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleColorF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleColorF.glsl @@ -33,20 +33,9 @@ uniform float waterSign;  void waterClip(vec3 pos)  { -    // TODO: make this less branchy -    if (waterSign > 0) +    if (((dot(pos.xyz, waterPlane.xyz) + waterPlane.w) * waterSign) < 0.0)      { -        if ((dot(pos.xyz, waterPlane.xyz) + waterPlane.w) < 0.0) -        { -            discard; -        } -    } -    else -    { -        if ((dot(pos.xyz, waterPlane.xyz) + waterPlane.w) > 0.0) -        { -            discard; -        } +        discard;      }  } diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsFuncs.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsFuncs.glsl index 5089b9e31e..9101fc0222 100644 --- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsFuncs.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsFuncs.glsl @@ -99,7 +99,7 @@ void calcAtmosphericVars(vec3 inPositionEye, vec3 light_dir, float ambFactor, ou      haze_glow = max(haze_glow, .001);  // set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)      haze_glow *= glow.x;      // higher glow.x gives dimmer glow (because next step is 1 / "angle") -    haze_glow = clamp(pow(haze_glow, glow.z), -100000, 100000); +    haze_glow = clamp(pow(haze_glow, glow.z), -100000.0, 100000.0);      // glow.z should be negative, so we're doing a sort of (1 / "angle") function      // add "minimum anti-solar illumination" diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl index 1372ddbcfa..bdc5b58060 100644 --- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl @@ -47,7 +47,7 @@ void calcAtmospherics(vec3 inPositionEye) {      vec3 tmpaddlit = vec3(1);      vec3 tmpattenlit = vec3(1);      vec3 light_dir = (sun_up_factor == 1) ? sun_dir : moon_dir; -    calcAtmosphericVars(inPositionEye, light_dir, 1, tmpsunlit, tmpamblit, tmpaddlit, tmpattenlit); +    calcAtmosphericVars(inPositionEye, light_dir, 1.0, tmpsunlit, tmpamblit, tmpaddlit, tmpattenlit);      setSunlitColor(tmpsunlit);      setAmblitColor(tmpamblit);      setAdditiveColor(tmpaddlit); diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl index cc9d72fae6..50b40e9c20 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl @@ -80,7 +80,7 @@ float getAmbientClamp();  void mirrorClip(vec3 pos); -void sampleReflectionProbesLegacy(inout vec3 ambenv, inout vec3 glossenv, inout vec3 legacyenv, +void sampleReflectionProbesLegacy(out vec3 ambenv, out vec3 glossenv, out vec3 legacyenv,          vec2 tc, vec3 pos, vec3 norm, float glossiness, float envIntensity, bool transparent, vec3 amblit_linear);  vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 diffuse, vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight, float ambiance) @@ -148,7 +148,7 @@ vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 diffuse, vec3 v, vec3 n, vec          float lit = 0.0f;          float amb_da = 0.0;//ambiance; -        if (da > 0) +        if (da > 0.0)          {              lit = clamp(da * dist_atten, 0.0, 1.0);              col = lit * light_col * diffuse; diff --git a/indra/newview/app_settings/shaders/class2/deferred/reflectionProbeF.glsl b/indra/newview/app_settings/shaders/class2/deferred/reflectionProbeF.glsl index c43582e185..2657b2b54e 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/reflectionProbeF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/reflectionProbeF.glsl @@ -56,7 +56,7 @@ vec4 sampleReflectionProbesDebug(vec3 pos)      return vec4(0, 0, 0, 0);  } -void sampleReflectionProbesLegacy(inout vec3 ambenv, inout vec3 glossenv, inout vec3 legacyenv, +void sampleReflectionProbesLegacy(out vec3 ambenv, out vec3 glossenv, out vec3 legacyenv,          vec2 tc, vec3 pos, vec3 norm, float glossiness, float envIntensity, bool transparent, vec3 amblit_linear)  {      ambenv = mix(ambenv, vec3(reflection_probe_ambiance * 0.25), reflection_probe_ambiance); diff --git a/indra/newview/app_settings/shaders/class3/deferred/fullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class3/deferred/fullbrightShinyF.glsl index 03dc3d7113..5e38864d38 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/fullbrightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/fullbrightShinyF.glsl @@ -48,7 +48,7 @@ vec3 linear_to_srgb(vec3 c);  vec3 srgb_to_linear(vec3 c);  // reflection probe interface -void sampleReflectionProbesLegacy(inout vec3 ambenv, inout vec3 glossenv, inout vec3 legacyenv, +void sampleReflectionProbesLegacy(out vec3 ambenv, out vec3 glossenv, out vec3 legacyenv,          vec2 tc, vec3 pos, vec3 norm, float glossiness, float envIntensity, bool transparent, vec3 amblit_linear);  void applyLegacyEnv(inout vec3 color, vec3 legacyenv, vec4 spec, vec3 pos, vec3 norm, float envIntensity); diff --git a/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl index 5708fc319f..f8803f1a29 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl @@ -62,7 +62,7 @@ out vec4 frag_color;  float sampleDirectionalShadow(vec3 pos, vec3 norm, vec2 pos_screen);  #endif -void sampleReflectionProbesLegacy(inout vec3 ambenv, inout vec3 glossenv, inout vec3 legacyenv, +void sampleReflectionProbesLegacy(out vec3 ambenv, out vec3 glossenv, out vec3 legacyenv,          vec2 tc, vec3 pos, vec3 norm, float glossiness, float envIntensity, bool transparent, vec3 amblit_linear);  void applyGlossEnv(inout vec3 color, vec3 glossenv, vec4 spec, vec3 pos, vec3 norm);  void applyLegacyEnv(inout vec3 color, vec3 legacyenv, vec4 spec, vec3 pos, vec3 norm, float envIntensity); @@ -138,7 +138,7 @@ vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 npos, vec3 diffuse, vec4 spe          float lit = 0.0f;          float amb_da = ambiance; -        if (da >= 0) +        if (da >= 0.0)          {              lit = clamp(da * dist_atten, 0.0, 1.0);              col = lit * light_col * diffuse; @@ -159,10 +159,10 @@ vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 npos, vec3 diffuse, vec4 spe              float nv = dot(n, npos);              float vh = dot(npos, h);              float sa = nh; -            float fres = pow(1 - dot(h, npos), 5)*0.4 + 0.5; +            float fres = pow(1.0 - dot(h, npos), 5.0)*0.4 + 0.5; -            float gtdenom = 2 * nh; -            float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh)); +            float gtdenom = 2.0 * nh; +            float gt = max(0.0, min(gtdenom * nv / vh, gtdenom * da / vh));              if (nh > 0.0)              { @@ -225,7 +225,7 @@ vec3 getNormal(inout float glossiness)  #ifdef HAS_NORMAL_MAP      vec4 vNt = texture(bumpMap, vary_texcoord1.xy);      glossiness *= vNt.a; -    vNt.xyz = vNt.xyz * 2 - 1; +    vNt.xyz = vNt.xyz * 2.0 - 1.0;      float sign = vary_sign;      vec3 vN = vary_normal;      vec3 vT = vary_tangent.xyz; @@ -284,10 +284,10 @@ float getShadow(vec3 pos, vec3 norm)      #if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND)          return sampleDirectionalShadow(pos, norm, vary_texcoord0.xy);      #else -        return 1; +        return 1.;      #endif  #else -    return 1; +    return 1.;  #endif  } @@ -377,9 +377,9 @@ void main()              float lit = min(nl*6.0, 1.0);              float sa = nh; -            float fres = pow(1 - vh, 5) * 0.4+0.5; -            float gtdenom = 2 * nh; -            float gt = max(0,(min(gtdenom * nv / vh, gtdenom * nl / vh))); +            float fres = pow(1.0 - vh, 5.0) * 0.4+0.5; +            float gtdenom = 2.0 * nh; +            float gt = max(0.0,(min(gtdenom * nv / vh, gtdenom * nl / vh)));              float scol = shadow*fres*texture(lightFunc, vec2(nh, glossiness)).r*gt/(nh*nl);              color.rgb += lit*scol*sunlit_linear.rgb*spec.rgb; @@ -396,7 +396,7 @@ void main()          applyLegacyEnv(color, legacyenv, spec, pos.xyz, norm.xyz, env);          float cur_glare = max(max(legacyenv.r, legacyenv.g), legacyenv.b); -        cur_glare = clamp(cur_glare, 0, 1); +        cur_glare = clamp(cur_glare, 0.0, 1.0);          cur_glare *= env;          glare += cur_glare;      } diff --git a/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl index 96cda1ef49..b11c2644aa 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl @@ -153,10 +153,10 @@ void main()                      if (spec.a > 0.0)                      {                          lit        = min(nl * 6.0, 1.0) * dist_atten; -                        float fres = pow(1 - vh, 5) * 0.4 + 0.5; +                        float fres = pow(1.0 - vh, 5.0) * 0.4 + 0.5; -                        float gtdenom = 2 * nh; -                        float gt      = max(0, min(gtdenom * nv / vh, gtdenom * nl / vh)); +                        float gtdenom = 2.0 * nh; +                        float gt      = max(0.0, min(gtdenom * nv / vh, gtdenom * nl / vh));                          if (nh > 0.0)                          { diff --git a/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl index ceb37f36a5..6a248f25bc 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl @@ -134,9 +134,9 @@ void main()              lit = min(nl*6.0, 1.0) * dist_atten;              float sa = nh; -            float fres = pow(1 - vh, 5) * 0.4+0.5; -            float gtdenom = 2 * nh; -            float gt = max(0,(min(gtdenom * nv / vh, gtdenom * nl / vh))); +            float fres = pow(1.0 - vh, 5.0) * 0.4+0.5; +            float gtdenom = 2.0 * nh; +            float gt = max(0.0,(min(gtdenom * nv / vh, gtdenom * nl / vh)));              if (nh > 0.0)              { diff --git a/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl index 136b3dd966..2f577f8459 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl @@ -839,7 +839,7 @@ vec4 sampleReflectionProbesDebug(vec3 pos)      return col;  } -void sampleReflectionProbesLegacy(inout vec3 ambenv, inout vec3 glossenv, inout vec3 legacyenv, +void sampleReflectionProbesLegacy(out vec3 ambenv, out vec3 glossenv, out vec3 legacyenv,          vec2 tc, vec3 pos, vec3 norm, float glossiness, float envIntensity, bool transparent, vec3 amblit)  {      float reflection_lods = max_probe_lod; diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index 948387a6ed..6cec65ad83 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -69,7 +69,7 @@ vec3  scaleSoftClipFragLinear(vec3 l);  // reflection probe interface  void sampleReflectionProbes(inout vec3 ambenv, inout vec3 glossenv,      vec2 tc, vec3 pos, vec3 norm, float glossiness, bool transparent, vec3 amblit_linear); -void sampleReflectionProbesLegacy(inout vec3 ambenv, inout vec3 glossenv, inout vec3 legacyenv, +void sampleReflectionProbesLegacy(out vec3 ambenv, out vec3 glossenv, out vec3 legacyenv,          vec2 tc, vec3 pos, vec3 norm, float glossiness, float envIntensity, bool transparent, vec3 amblit_linear);  void applyGlossEnv(inout vec3 color, vec3 glossenv, vec4 spec, vec3 pos, vec3 norm);  void applyLegacyEnv(inout vec3 color, vec3 legacyenv, vec4 spec, vec3 pos, vec3 norm, float envIntensity); diff --git a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl index a46e3688dc..017f8bc844 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl @@ -199,7 +199,7 @@ void main()              proj_tc.x > 0.0 &&              proj_tc.y > 0.0)          { -            float amb_da = 0; +            float amb_da = 0.0;              float lit = 0.0;              if (nl > 0.0) @@ -222,10 +222,10 @@ void main()          {              dlit *= min(nl*6.0, 1.0) * dist_atten; -            float fres = pow(1 - vh, 5)*0.4+0.5; +            float fres = pow(1.0 - vh, 5.0)*0.4+0.5; -            float gtdenom = 2 * nh; -            float gt = max(0, min(gtdenom * nv / vh, gtdenom * nl / vh)); +            float gtdenom = 2.0 * nh; +            float gt = max(0.0, min(gtdenom * nv / vh, gtdenom * nl / vh));              if (nh > 0.0)              { @@ -259,7 +259,7 @@ void main()                          stc.x > 0.0 &&                          stc.y > 0.0)                      { -                        final_color += color.rgb * texture2DLodSpecular(stc.xy, (1 - spec.a) * (proj_lod * 0.6)).rgb * shadow * envIntensity; +                        final_color += color.rgb * texture2DLodSpecular(stc.xy, (1.0 - spec.a) * (proj_lod * 0.6)).rgb * shadow * envIntensity;                      }                  }              } diff --git a/indra/newview/app_settings/shaders/class3/environment/waterF.glsl b/indra/newview/app_settings/shaders/class3/environment/waterF.glsl index 349f3b9a67..b9de4edc67 100644 --- a/indra/newview/app_settings/shaders/class3/environment/waterF.glsl +++ b/indra/newview/app_settings/shaders/class3/environment/waterF.glsl @@ -135,8 +135,10 @@ void sampleReflectionProbesWater(inout vec3 ambenv, inout vec3 glossenv,  void sampleReflectionProbes(inout vec3 ambenv, inout vec3 glossenv,          vec2 tc, vec3 pos, vec3 norm, float glossiness, bool transparent, vec3 amblit_linear); +/*  void sampleReflectionProbesLegacy(inout vec3 ambenv, inout vec3 glossenv, inout vec3 legacyenv,          vec2 tc, vec3 pos, vec3 norm, float glossiness, float envIntensity, bool transparent, vec3 amblit); +*/  vec3 getPositionWithNDC(vec3 ndc); @@ -189,7 +191,7 @@ void main()      vB = cross(vN, vT);      vec3 pos = vary_position.xyz; -    float linear_depth = 1 / -pos.z; +    float linear_depth = 1.0 / -pos.z;      float dist = length(pos.xyz); @@ -220,10 +222,10 @@ void main()      calculateFresnelFactors(df3, df2, normalize(view.xyz), wave1, wave2, wave3, wavef); -    vec3 waver = wavef*3; +    vec3 waver = wavef*3.0;      vec3 up = transform_normal(vec3(0,0,1)); -    float vdu = -dot(viewVec, up)*2; +    float vdu = -dot(viewVec, up)*2.0;      vec3 wave_ibl = wavef * normScale;      wave_ibl.z *= 2.0; @@ -231,7 +233,7 @@ void main()      vec3 norm = transform_normal(normalize(wavef)); -    vdu = clamp(vdu, 0, 1); +    vdu = clamp(vdu, 0.0, 1.0);      //wavef.z *= max(vdu*vdu*vdu, 0.1);      wavef = normalize(wavef); @@ -243,7 +245,7 @@ void main()      dist = max(dist, 5.0);      //figure out distortion vector (ripply) -    vec2 distort2 = distort + waver.xy * refScale / max(dmod, 1.0) * 2; +    vec2 distort2 = distort + waver.xy * refScale / max(dmod, 1.0) * 2.0;      distort2 = clamp(distort2, vec2(0), vec2(0.999)); @@ -256,7 +258,7 @@ void main()  #endif      vec3 sunlit_linear = sunlit; -    float fade = 1; +    float fade = 1.0;  #ifdef TRANSPARENT_WATER      float depth = texture(depthMap, distort).r; @@ -264,12 +266,12 @@ void main()      // Calculate some distance fade in the water to better assist with refraction blending and reducing the refraction texture's "disconnect".  #ifdef SHORELINE_FADE -    fade = max(0,min(1, (pos.z - refPos.z) / 10)); +    fade = max(0.0,min(1.0, (pos.z - refPos.z) / 10.0));  #else -    fade = 1; +    fade = 1.0;  #endif      fade *= water_mask; -    distort2 = mix(distort, distort2, min(1, fade * 10)); +    distort2 = mix(distort, distort2, min(1.0, fade * 10.0));      depth = texture(depthMap, distort2).r;      refPos = getPositionWithNDC(vec3(distort2 * 2.0 - vec2(1.0), depth * 2.0 - 1.0)); @@ -284,13 +286,13 @@ void main()  #else      vec4 fb = applyWaterFogViewLinear(viewVec*2048.0, vec4(1.0)); -    if (water_mask < 1) +    if (water_mask < 1.0)          discard;  #endif      float metallic = 1.0;      float perceptualRoughness = blurMultiplier; -    float gloss      = 1 - perceptualRoughness; +    float gloss      = 1.0 - perceptualRoughness;      vec3  irradiance = vec3(0);      vec3  radiance  = vec3(0); @@ -316,7 +318,7 @@ void main()      float NdotV = clamp(abs(dot(norm, v)), 0.001, 1.0); -    float nl = 0; +    float nl = 0.0;      vec3 diffPunc = vec3(0);      vec3 specPunc = vec3(0); @@ -326,23 +328,23 @@ void main()      radiance *= df2.y;      //radiance = toneMapNoExposure(radiance);      vec3 color = vec3(0); -    color = mix(fb.rgb, radiance, min(1, df2.x)) + punctual.rgb; +    color = mix(fb.rgb, radiance, min(1.0, df2.x)) + punctual.rgb; -    float water_haze_scale = 4; +    float water_haze_scale = 4.0;      if (classic_mode > 0) -        water_haze_scale = 1; +        water_haze_scale = 1.0;      // This looks super janky, but we do this to restore water haze in the distance.      // These values were finagled in to try and bring back some of the distant brightening on legacy water.  Also works reasonably well on PBR skies such as PBR midday.      // color = mix(color, additive * water_haze_scale, (1 - atten));      // We shorten the fade here at the shoreline so it doesn't appear too soft from a distance. -    fade *= 60; -    fade = min(1, fade); +    fade *= 60.0; +    fade = min(1.0, fade);      color = mix(fb.rgb, color, fade); -    float spec = min(max(max(punctual.r, punctual.g), punctual.b), 0); +    float spec = min(max(max(punctual.r, punctual.g), punctual.b), 0.0);      frag_color = min(vec4(1),max(vec4(color.rgb, spec * water_mask), vec4(0)));  } | 
