diff options
Diffstat (limited to 'indra/newview/app_settings/shaders/class1')
6 files changed, 48 insertions, 77 deletions
| 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;  		} | 
