diff options
Diffstat (limited to 'indra')
14 files changed, 61 insertions, 95 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 8996b1dd4f..6d7e93b364 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -10402,7 +10402,7 @@      <key>Type</key>      <string>F32</string>      <key>Value</key> -    <real>32</real> +    <real>16</real>    </map>    <key>RenderTonemapper</key>    <map> diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl index fe796a054d..e0e97bb938 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl @@ -24,19 +24,15 @@   */  /*[EXTRA_CODE_HERE]*/  -#ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_data[3]; -#else -#define frag_data gl_FragData -#endif +out vec4 frag_data[4];  /////////////////////////////////////////////////////////////////////////  // The fragment shader for the sky  ///////////////////////////////////////////////////////////////////////// -VARYING vec3 vary_CloudColorSun; -VARYING vec3 vary_CloudColorAmbient; -VARYING float vary_CloudDensity; +in vec3 vary_CloudColorSun; +in vec3 vary_CloudColorAmbient; +in float vary_CloudDensity;  uniform sampler2D cloud_noise_texture;  uniform sampler2D cloud_noise_texture_next; @@ -46,16 +42,16 @@ uniform vec3 cloud_pos_density2;  uniform float cloud_scale;  uniform float cloud_variance; -VARYING vec2 vary_texcoord0; -VARYING vec2 vary_texcoord1; -VARYING vec2 vary_texcoord2; -VARYING vec2 vary_texcoord3; -VARYING float altitude_blend_factor; +in vec2 vary_texcoord0; +in vec2 vary_texcoord1; +in vec2 vary_texcoord2; +in vec2 vary_texcoord3; +in float altitude_blend_factor;  vec4 cloudNoise(vec2 uv)  { -   vec4 a = texture2D(cloud_noise_texture, uv); -   vec4 b = texture2D(cloud_noise_texture_next, uv); +   vec4 a = texture(cloud_noise_texture, uv); +   vec4 b = texture(cloud_noise_texture_next, uv);     vec4 cloud_noise_sample = mix(a, b, blend_factor);     return cloud_noise_sample;  } @@ -118,8 +114,9 @@ void main()      color.rgb *= 2.0;      /// Gamma correct for WL (soft clip effect). -    frag_data[0] = vec4(color.rgb, alpha1); +    frag_data[0] = vec4(0);      frag_data[1] = vec4(0.0,0.0,0.0,0.0);      frag_data[2] = vec4(0,0,0,GBUFFER_FLAG_SKIP_ATMOS); +    frag_data[3] = vec4(color.rgb, alpha1);  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl b/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl index 41dd485fae..fabc61eb5e 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl @@ -27,11 +27,7 @@  /*[EXTRA_CODE_HERE]*/ -#ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_data[3]; -#else -#define frag_data gl_FragData -#endif +out vec4 frag_data[4];  uniform vec4 color;  uniform vec3 moonlight_color; @@ -39,12 +35,7 @@ uniform vec3 moon_dir;  uniform float moon_brightness;  uniform sampler2D diffuseMap; -VARYING vec2 vary_texcoord0; - -vec3 srgb_to_linear(vec3 c); - -/// Soft clips the light with a gamma correction -vec3 scaleSoftClip(vec3 light); +in vec2 vary_texcoord0;  void main()   { @@ -53,24 +44,25 @@ void main()      if( moon_dir.z > 0 )          fade = clamp( moon_dir.z*moon_dir.z*4.0, 0.0, 1.0 ); -    vec4 c      = texture2D(diffuseMap, vary_texcoord0.xy); +    vec4 c      = texture(diffuseMap, vary_texcoord0.xy);      // SL-14113 Don't write to depth; prevent moon's quad from hiding stars which should be visible      // Moon texture has transparent pixels <0x55,0x55,0x55,0x00>      if (c.a <= 2./255.) // 0.00784 +    {          discard; +    } -//       c.rgb  = srgb_to_linear(c.rgb); -         c.rgb *= moonlight_color.rgb; -         c.rgb *= moon_brightness; -         c.rgb *= fade; -         c.a   *= fade; +    c.rgb *= moonlight_color.rgb; +    c.rgb *= moon_brightness; -         c.rgb  = scaleSoftClip(c.rgb); +    c.rgb *= fade; +    c.a   *= fade; -    frag_data[0] = vec4(c.rgb, c.a); +    frag_data[0] = vec4(0);      frag_data[1] = vec4(0.0);      frag_data[2] = vec4(0.0, 0.0, 0.0, GBUFFER_FLAG_HAS_ATMOS); +    frag_data[3] = vec4(c.rgb, c.a);  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl index 930338cefb..cc4c3b5dce 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl @@ -22,12 +22,10 @@   * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ -  -/*[EXTRA_CODE_HERE]*/  // Inputs -VARYING vec3 vary_HazeColor; -VARYING float vary_LightNormPosDot; +in vec3 vary_HazeColor; +in float vary_LightNormPosDot;  uniform sampler2D rainbow_map;  uniform sampler2D halo_map; @@ -36,11 +34,9 @@ uniform float moisture_level;  uniform float droplet_radius;  uniform float ice_level; -#ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_data[3]; -#else -#define frag_data gl_FragData -#endif +out vec4 frag_data[4]; + +vec3 srgb_to_linear(vec3 c);  /////////////////////////////////////////////////////////////////////////  // The fragment shader for the sky @@ -63,19 +59,16 @@ vec3 rainbow(float d)      d = clamp(d, 0.0, 0.25) + interior_coord;      float rad = (droplet_radius - 5.0f) / 1024.0f; -    return pow(texture2D(rainbow_map, vec2(rad+0.5, d)).rgb, vec3(1.8)) * moisture_level; +    return pow(texture(rainbow_map, vec2(rad+0.5, d)).rgb, vec3(1.8)) * moisture_level;  }  vec3 halo22(float d)  {      d       = clamp(d, 0.1, 1.0);      float v = sqrt(clamp(1 - (d * d), 0, 1)); -    return texture2D(halo_map, vec2(0, v)).rgb * ice_level; +    return texture(halo_map, vec2(0, v)).rgb * ice_level;  } -/// Soft clips the light with a gamma correction -vec3 scaleSoftClip(vec3 light); -  void main()  {      // Potential Fill-rate optimization.  Add cloud calculation  @@ -91,11 +84,10 @@ void main()      color.rgb += rainbow(optic_d);      color.rgb += halo_22;      color.rgb *= 2.; -    color.rgb = scaleSoftClip(color.rgb); -    // Gamma correct for WL (soft clip effect). -    frag_data[0] = vec4(color.rgb, 1.0); -    frag_data[1] = vec4(0.0,0.0,0.0,0.0); +    frag_data[0] = vec4(0); +    frag_data[1] = vec4(0);      frag_data[2] = vec4(0.0,0.0,0.0,GBUFFER_FLAG_SKIP_ATMOS); //1.0 in norm.w masks off fog +    frag_data[3] = vec4(color.rgb, 1.0);  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl index cdafdba15c..4f1756c367 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl @@ -25,15 +25,11 @@  /*[EXTRA_CODE_HERE]*/ -#ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_data[3]; -#else -#define frag_data gl_FragData -#endif +out vec4 frag_data[4]; -VARYING vec4 vertex_color; -VARYING vec2 vary_texcoord0; -VARYING vec2 screenpos; +in vec4 vertex_color; +in vec2 vary_texcoord0; +in vec2 screenpos;  uniform sampler2D diffuseMap;  uniform float blend_factor; @@ -62,8 +58,9 @@ void main()      col.a = (col.a * factor) * 32.0f;      col.a *= twinkle(); -    frag_data[0] = col; +    frag_data[0] = vec4(0);      frag_data[1] = vec4(0.0f);      frag_data[2] = vec4(0.0, 1.0, 0.0, GBUFFER_FLAG_SKIP_ATMOS); +    frag_data[3] = col;  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunDiscF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunDiscF.glsl index e35ea83f0a..a85e6ebc66 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/sunDiscF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/sunDiscF.glsl @@ -27,36 +27,29 @@  /*[EXTRA_CODE_HERE]*/ -#ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_data[3]; -#else -#define frag_data gl_FragData -#endif +out vec4 frag_data[4];  vec3 srgb_to_linear(vec3 c); -vec3 fullbrightAtmosTransport(vec3 light); -vec3 fullbrightScaleSoftClip(vec3 light);  uniform sampler2D diffuseMap;  uniform sampler2D altDiffuseMap;  uniform float blend_factor; // interp factor between sunDisc A/B -VARYING vec2 vary_texcoord0; -VARYING float sun_fade; +in vec2 vary_texcoord0; +in float sun_fade;  void main()   { -    vec4 sunDiscA = texture2D(diffuseMap, vary_texcoord0.xy); -    vec4 sunDiscB = texture2D(altDiffuseMap, vary_texcoord0.xy); +    vec4 sunDiscA = texture(diffuseMap, vary_texcoord0.xy); +    vec4 sunDiscB = texture(altDiffuseMap, vary_texcoord0.xy);      vec4 c     = mix(sunDiscA, sunDiscB, blend_factor); -    //c.rgb = fullbrightAtmosTransport(c.rgb); -    c.rgb = fullbrightScaleSoftClip(c.rgb);      // SL-9806 stars poke through      //c.a *= sun_fade; -    frag_data[0] = c; +    frag_data[0] = vec4(0);      frag_data[1] = vec4(0.0f);      frag_data[2] = vec4(0.0, 1.0, 0.0, GBUFFER_FLAG_SKIP_ATMOS); +    frag_data[3] = c;  } diff --git a/indra/newview/app_settings/shaders/class1/interface/radianceGenF.glsl b/indra/newview/app_settings/shaders/class1/interface/radianceGenF.glsl index b6f080739e..a1839d4a67 100644 --- a/indra/newview/app_settings/shaders/class1/interface/radianceGenF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/radianceGenF.glsl @@ -151,7 +151,7 @@ vec4 prefilterEnvMap(vec3 R)  			// Solid angle of 1 pixel across all cube faces  			float omegaP = 4.0 * PI / (6.0 * envMapDim * envMapDim);  			// Biased (+1.0) mip level for better result -			float mipLevel = roughness == 0.0 ? 0.0 : max(0.5 * log2(omegaS / omegaP) + 1.0, 0.0f); +			float mipLevel = roughness == 0.0 ? 0.0 : clamp(0.5 * log2(omegaS / omegaP) + 1.0, 0.0f, max_probe_lod);  			color += textureLod(reflectionProbes, vec4(L, sourceIdx), mipLevel) * dotNL;  			totalWeight += dotNL;  		} diff --git a/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl index 7d8f9c218d..0fb30559d4 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl @@ -37,7 +37,6 @@ uniform sampler2D depthMap;  uniform sampler2D diffuseRect;  uniform sampler2D specularRect;  uniform sampler2D emissiveRect; // PBR linear packed Occlusion, Roughness, Metal. See: pbropaqueF.glsl -uniform sampler2D     noiseMap;  uniform sampler2D     lightFunc;  uniform vec3  env_mat[3]; @@ -132,9 +131,6 @@ void main()      }      else      { - -        float noise = texture2D(noiseMap, tc).b; -          diffuse = srgb_to_linear(diffuse);          spec.rgb = srgb_to_linear(spec.rgb); @@ -154,7 +150,6 @@ void main()                      float fa         = light_col[i].a;                      float dist_atten = calcLegacyDistanceAttenuation(dist, fa); -                    dist_atten *= noise;                      float lit = nl * dist_atten; diff --git a/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl index 5ed8a75e0e..30b7895157 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl @@ -41,7 +41,6 @@ uniform sampler2D normalMap;  uniform sampler2D emissiveRect; // PBR linear packed Occlusion, Roughness, Metal. See: pbropaqueF.glsl  uniform samplerCube environmentMap;  uniform sampler2D lightMap; -uniform sampler2D noiseMap;  uniform sampler2D projectionMap; // rgba  uniform sampler2D lightFunc; @@ -187,7 +186,6 @@ void main()          diffuse = srgb_to_linear(diffuse);          spec.rgb = srgb_to_linear(spec.rgb); -        float noise = texture2D(noiseMap, tc).b;          if (proj_tc.z > 0.0 &&              proj_tc.x < 1.0 &&              proj_tc.y < 1.0 && @@ -199,7 +197,7 @@ void main()              if (nl > 0.0)              { -                lit = nl * dist_atten * noise; +                lit = nl * dist_atten;                  dlit = getProjectedLightDiffuseColor( l_dist, proj_tc.xy ); @@ -209,7 +207,7 @@ void main()                  amb_da += (nl*0.5+0.5) /* * (1.0-shadow) */ * proj_ambiance;              } -            amb_rgb = getProjectedLightAmbiance( amb_da, dist_atten, lit, nl, noise, proj_tc.xy ); +            amb_rgb = getProjectedLightAmbiance( amb_da, dist_atten, lit, nl, 1.0, proj_tc.xy );              final_color += diffuse.rgb * amb_rgb;          } diff --git a/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl index a6a2543915..bd06a680f5 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl @@ -656,7 +656,7 @@ void sampleReflectionProbes(inout vec3 ambenv, inout vec3 glossenv,          vec2 tc, vec3 pos, vec3 norm, float glossiness)  {      // TODO - don't hard code lods -    float reflection_lods = max_probe_lod-1; +    float reflection_lods = max_probe_lod;      preProbeSample(pos);      vec3 refnormpersp = reflect(pos.xyz, norm.xyz); diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index dfd1d47b3e..0e3ebd1534 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -211,7 +211,7 @@ void main()      else if (!GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_ATMOS))      {          //should only be true of WL sky, just port over base color value -        color = srgb_to_linear(baseColor.rgb); +        color = srgb_to_linear(texture2D(emissiveRect, tc).rgb);      }      else      { diff --git a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl index 3d8b95b882..33ea2129cf 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl @@ -51,7 +51,6 @@ uniform sampler2D normalMap;  uniform sampler2D emissiveRect; // PBR linear packed Occlusion, Roughness, Metal. See: pbropaqueF.glsl  uniform samplerCube environmentMap;  uniform sampler2D lightMap; -uniform sampler2D noiseMap;  uniform sampler2D projectionMap; // rgba  uniform sampler2D lightFunc; @@ -193,7 +192,6 @@ void main()          diffuse = srgb_to_linear(diffuse);          spec.rgb = srgb_to_linear(spec.rgb); -        float noise = texture2D(noiseMap, tc).b;          if (proj_tc.z > 0.0 &&              proj_tc.x < 1.0 &&              proj_tc.y < 1.0 && @@ -205,7 +203,7 @@ void main()              if (nl > 0.0)              { -                lit = nl * dist_atten * noise; +                lit = nl * dist_atten;                  dlit = getProjectedLightDiffuseColor( l_dist, proj_tc.xy ); @@ -214,7 +212,7 @@ void main()                  amb_da += (nl*0.5+0.5) /* * (1.0-shadow) */ * proj_ambiance;              } -            vec3 amb_rgb = getProjectedLightAmbiance( amb_da, dist_atten, lit, nl, noise, proj_tc.xy ); +            vec3 amb_rgb = getProjectedLightAmbiance( amb_da, dist_atten, lit, nl, 1.0, proj_tc.xy );              final_color += diffuse.rgb*amb_rgb;    #if DEBUG_LEG_LIGHT_TYPE              final_color = vec3(0,0.5,0); diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index d88f0f9847..c59fad82a4 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -1758,7 +1758,11 @@ void LLEnvironment::updateGLVariablesForSettings(LLShaderUniforms* uniforms, con              { // maximize and remove tinting if this is an irradiance map render pass and the parameter feeds into the sky background color                  auto max_vec = [](LLVector4 col)                  { -                    col.mV[0] = col.mV[1] = col.mV[2] = llmax(llmax(col.mV[0], col.mV[1]), col.mV[2]); +                    LLColor3 color(col); +                    F32 h, s, l; +                    color.calcHSL(&h, &s, &l); + +                    col.mV[0] = col.mV[1] = col.mV[2] = l;                      return col;                  }; diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp index c664dbbe9e..58ce571505 100644 --- a/indra/newview/llreflectionmapmanager.cpp +++ b/indra/newview/llreflectionmapmanager.cpp @@ -1018,7 +1018,7 @@ void LLReflectionMapManager::initReflectionMaps()          mTexture->allocate(mProbeResolution, 3, mReflectionProbeCount + 2);          mIrradianceMaps = new LLCubeMapArray(); -        mIrradianceMaps->allocate(LL_IRRADIANCE_MAP_RESOLUTION, 4, mReflectionProbeCount, FALSE); +        mIrradianceMaps->allocate(LL_IRRADIANCE_MAP_RESOLUTION, 3, mReflectionProbeCount, FALSE);      }      if (mVertexBuffer.isNull()) | 
