diff options
Diffstat (limited to 'indra/newview')
20 files changed, 150 insertions, 528 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudShadowF.glsl deleted file mode 100644 index afcb309e33..0000000000 --- a/indra/newview/app_settings/shaders/class1/deferred/cloudShadowF.glsl +++ /dev/null @@ -1,126 +0,0 @@ -/**  - * @file class3/deferred/cloudsF.glsl - * - * $LicenseInfo:firstyear=2005&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2005, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ -  -#ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_color; -#else -#define frag_color gl_FragColor -#endif - -uniform sampler2D diffuseMap; - -VARYING vec4 pos; -VARYING float target_pos_x; -VARYING float vary_CloudDensity; -VARYING vec2 vary_texcoord0; -VARYING vec2 vary_texcoord1; -VARYING vec2 vary_texcoord2; -VARYING vec2 vary_texcoord3; - -uniform sampler2D cloud_noise_texture; -uniform sampler2D cloud_noise_texture_next; -uniform float blend_factor; -uniform vec4 cloud_pos_density1; -uniform vec4 cloud_pos_density2; -uniform vec4 sunlight_color; -uniform float cloud_shadow; -uniform float cloud_scale; -uniform float cloud_variance; -uniform vec3 camPosLocal; -uniform vec3 sun_dir; -uniform float sun_size; -uniform float far_z; - -#if !defined(DEPTH_CLAMP) -VARYING vec4 post_pos; -#endif - -vec4 cloudNoise(vec2 uv) -{ -   vec4 a = texture2D(cloud_noise_texture, uv); -   vec4 b = texture2D(cloud_noise_texture_next, uv); -   vec4 cloud_noise_sample = mix(a, b, blend_factor); -   return normalize(cloud_noise_sample); -} - -void main() -{ -    // Set variables -    vec2 uv1 = vary_texcoord0.xy; -    vec2 uv2 = vary_texcoord1.xy; -    vec2 uv3 = vary_texcoord2.xy; -    float cloudDensity = 2.0 * (cloud_shadow - 0.25); - -    if (cloud_scale >= 0.0001) -    { -        vec2 uv4 = vary_texcoord3.xy; -     -        vec2 disturbance  = vec2(cloudNoise(uv1 / 8.0f).x, cloudNoise((uv3 + uv1) / 16.0f).x) * cloud_variance * (1.0f - cloud_scale * 0.25f); -        vec2 disturbance2 = vec2(cloudNoise((uv1 + uv3) / 4.0f).x, cloudNoise((uv4 + uv2) / 8.0f).x) * cloud_variance * (1.0f - cloud_scale * 0.25f); -     -        // Offset texture coords -        uv1 += cloud_pos_density1.xy + (disturbance * 0.2);    //large texture, visible density -        uv2 += cloud_pos_density1.xy;   //large texture, self shadow -        uv3 += cloud_pos_density2.xy;   //small texture, visible density -        uv4 += cloud_pos_density2.xy;   //small texture, self shadow -     -        float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0 + disturbance2.x + disturbance2.y) * 4.0); -     -        cloudDensity *= 1.0 - (density_variance * density_variance); -     -        // Compute alpha1, the main cloud opacity -        float alpha1 = (cloudNoise(uv1).x - 0.5) + (cloudNoise(uv3).x - 0.5) * cloud_pos_density2.z; -        alpha1 = min(max(alpha1 + cloudDensity, 0.) * 10 * cloud_pos_density1.z, 1.); -     -        // And smooth -        alpha1 = 1. - alpha1 * alpha1; -        alpha1 = 1. - alpha1 * alpha1;   -     -        if (alpha1 < 0.001f) -        { -            discard; -        } -     -        // Compute alpha2, for self shadowing effect -        // (1 - alpha2) will later be used as percentage of incoming sunlight -        float alpha2 = (cloudNoise(uv2).x - 0.5); -        alpha2 = min(max(alpha2 + cloudDensity, 0.) * 2.5 * cloud_pos_density1.z, 1.); -     -        // And smooth -        alpha2 = 1. - alpha2; -        alpha2 = 1. - alpha2 * alpha2;   -     -        frag_color = vec4(alpha1, alpha1, alpha1, 1); -    } -    else -    { -        frag_color = vec4(1); -    } - -#if !defined(DEPTH_CLAMP) -    gl_FragDepth = max(post_pos.z/post_pos.w*0.5+0.5, 0.0); -#endif - -} diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudShadowV.glsl deleted file mode 100644 index effb070f93..0000000000 --- a/indra/newview/app_settings/shaders/class1/deferred/cloudShadowV.glsl +++ /dev/null @@ -1,63 +0,0 @@ -/**  - * @file cloudShadowV.glsl - * - * $LicenseInfo:firstyear=2011&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2011, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -uniform mat4 texture_matrix0; -uniform mat4 modelview_projection_matrix; -uniform float shadow_target_width; - -ATTRIBUTE vec3 position; -ATTRIBUTE vec4 diffuse_color; -ATTRIBUTE vec2 texcoord0; - -#if !defined(DEPTH_CLAMP) -VARYING float pos_zd2; -#endif - -VARYING vec4 pos; -VARYING float target_pos_x; -VARYING vec2 vary_texcoord0; -VARYING vec4 vertex_color; - -void passTextureIndex(); - -void main() -{ -	//transform vertex -	vec4 pre_pos = vec4(position.xyz, 1.0); -	pos = modelview_projection_matrix * pre_pos; -	target_pos_x = 0.5 * (shadow_target_width - 1.0) * pos.x; - -#if !defined(DEPTH_CLAMP) -	pos_zd2 = pos.z * 0.5; -	gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w); -#else -	gl_Position = pos; -#endif -	 -	passTextureIndex(); - -	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -	vertex_color = diffuse_color; -} diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl index 348e0f5228..788ce4a47b 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl @@ -34,15 +34,15 @@ out vec4 frag_data[3];  // The fragment shader for the sky  ///////////////////////////////////////////////////////////////////////// -VARYING vec4 vary_CloudColorSun; -VARYING vec4 vary_CloudColorAmbient; +VARYING vec3 vary_CloudColorSun; +VARYING vec3 vary_CloudColorAmbient;  VARYING float vary_CloudDensity;  uniform sampler2D cloud_noise_texture;  uniform sampler2D cloud_noise_texture_next;  uniform float blend_factor; -uniform vec4 cloud_pos_density1; -uniform vec4 cloud_pos_density2; +uniform vec3 cloud_pos_density1; +uniform vec3 cloud_pos_density2;  uniform float cloud_scale;  uniform float cloud_variance; @@ -69,8 +69,8 @@ void main()      vec2 uv1 = vary_texcoord0.xy;      vec2 uv2 = vary_texcoord1.xy; -    vec4 cloudColorSun = vary_CloudColorSun; -    vec4 cloudColorAmbient = vary_CloudColorAmbient; +    vec3 cloudColorSun = vary_CloudColorSun; +    vec3 cloudColorAmbient = vary_CloudColorAmbient;      float cloudDensity = vary_CloudDensity;      vec2 uv3 = vary_texcoord2.xy;      vec2 uv4 = vary_texcoord3.xy; @@ -115,7 +115,7 @@ void main()      alpha2 = 1. - alpha2 * alpha2;        // Combine -    vec4 color; +    vec3 color;      color = (cloudColorSun*(1.-alpha2) + cloudColorAmbient);      color.rgb= max(vec3(0), color.rgb);      color.rgb *= 2.0; diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl index 8e0a001403..5ca210863e 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl @@ -33,8 +33,8 @@ ATTRIBUTE vec2 texcoord0;  ///////////////////////////////////////////////////////////////////////////////  // Output parameters -VARYING vec4 vary_CloudColorSun; -VARYING vec4 vary_CloudColorAmbient; +VARYING vec3 vary_CloudColorSun; +VARYING vec3 vary_CloudColorAmbient;  VARYING float vary_CloudDensity;  VARYING vec2 vary_texcoord0; @@ -46,13 +46,13 @@ VARYING float altitude_blend_factor;  // Inputs  uniform vec3 camPosLocal; -uniform vec4 lightnorm; -uniform vec4 sunlight_color; -uniform vec4 moonlight_color; +uniform vec3 lightnorm; +uniform vec3 sunlight_color; +uniform vec3 moonlight_color;  uniform int sun_up_factor; -uniform vec4 ambient_color; -uniform vec4 blue_horizon; -uniform vec4 blue_density; +uniform vec3 ambient_color; +uniform vec3 blue_horizon; +uniform vec3 blue_density;  uniform float haze_horizon;  uniform float haze_density; @@ -60,10 +60,10 @@ uniform float cloud_shadow;  uniform float density_multiplier;  uniform float max_y; -uniform vec4 glow; +uniform vec3 glow;  uniform float sun_moon_glow_factor; -uniform vec4 cloud_color; +uniform vec3 cloud_color;  uniform float cloud_scale; @@ -114,17 +114,17 @@ void main()      float rel_pos_len  = length(rel_pos);  	// Initialize temp variables -	vec4 sunlight = sunlight_color; -	vec4 light_atten; +	vec3 sunlight = sunlight_color; +	vec3 light_atten;  	// Sunlight attenuation effect (hue and brightness) due to atmosphere  	// this is used later for sunlight modulation at various altitudes -    light_atten = (blue_density + vec4(haze_density * 0.25)) * (density_multiplier * max_y); +    light_atten = (blue_density + vec3(haze_density * 0.25)) * (density_multiplier * max_y);  	// Calculate relative weights -    vec4 combined_haze = abs(blue_density) + vec4(abs(haze_density)); -    vec4 blue_weight   = blue_density / combined_haze; -    vec4 haze_weight   = haze_density / combined_haze; +    vec3 combined_haze = abs(blue_density) + vec3(abs(haze_density)); +    vec3 blue_weight   = blue_density / combined_haze; +    vec3 haze_weight   = haze_density / combined_haze;      // Compute sunlight from rel_pos & lightnorm (for long rays like sky)      float off_axis = 1.0 / max(1e-6, max(0., rel_pos_norm.y) + lightnorm.y); @@ -155,14 +155,14 @@ void main()      haze_glow = (sun_moon_glow_factor < 1.0) ? 0.0 : (haze_glow + 0.25);  	// Increase ambient when there are more clouds -	vec4 tmpAmbient = ambient_color; +	vec3 tmpAmbient = ambient_color;  	tmpAmbient += (1. - tmpAmbient) * cloud_shadow * 0.5;   	// Dim sunlight by cloud shadow percentage  	sunlight *= (1. - cloud_shadow);  	// Haze color below cloud -    vec4 additiveColorBelowCloud = +    vec3 additiveColorBelowCloud =          (blue_horizon * blue_weight * (sunlight + tmpAmbient) + (haze_horizon * haze_weight) * (sunlight * haze_glow + tmpAmbient));  	// CLOUDS @@ -178,7 +178,7 @@ void main()      combined_haze = sqrt(combined_haze);  // less atmos opacity (more transparency) below clouds      vary_CloudColorSun *= combined_haze;      vary_CloudColorAmbient *= combined_haze; -    vec4 oHazeColorBelowCloud = additiveColorBelowCloud * (1. - combined_haze); +    vec3 oHazeColorBelowCloud = additiveColorBelowCloud * (1. - combined_haze);  	// Make a nice cloud density based on the cloud_shadow value that was passed in.  	vary_CloudDensity = 2. * (cloud_shadow - 0.25); diff --git a/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl b/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl index a513d60388..b4044353b4 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl @@ -34,8 +34,7 @@ out vec4 frag_data[3];  #endif  uniform vec4 color; -uniform vec4 sunlight_color; -uniform vec4 moonlight_color; +uniform vec3 moonlight_color;  uniform vec3 moon_dir;  uniform float moon_brightness;  uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl index ecb0c43518..adc2db60b6 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl @@ -35,7 +35,7 @@ out vec4 frag_data[3];  // The fragment shader for the sky  ///////////////////////////////////////////////////////////////////////// -VARYING vec4 vary_HazeColor; +VARYING vec3 vary_HazeColor;  /// Soft clips the light with a gamma correction  vec3 scaleSoftClip(vec3 light); @@ -48,7 +48,7 @@ void main()      // the fragment) if the sky wouldn't show up because the clouds       // are fully opaque. -    vec4 color; +    vec3 color;      color = vary_HazeColor;      color.rgb *= 2.; diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl index 223143bc1b..ff53646fd4 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl @@ -32,18 +32,18 @@ ATTRIBUTE vec3 position;  ///////////////////////////////////////////////////////////////////////////////  // Output parameters -VARYING vec4 vary_HazeColor; +VARYING vec3 vary_HazeColor;  // Inputs  uniform vec3 camPosLocal; -uniform vec4  lightnorm; -uniform vec4  sunlight_color; -uniform vec4  moonlight_color; +uniform vec3  lightnorm; +uniform vec3  sunlight_color; +uniform vec3  moonlight_color;  uniform int   sun_up_factor; -uniform vec4  ambient_color; -uniform vec4  blue_horizon; -uniform vec4  blue_density; +uniform vec3  ambient_color; +uniform vec3  blue_horizon; +uniform vec3  blue_density;  uniform float haze_horizon;  uniform float haze_density; @@ -52,7 +52,7 @@ uniform float density_multiplier;  uniform float distance_multiplier;  uniform float max_y; -uniform vec4  glow; +uniform vec3  glow;  uniform float sun_moon_glow_factor;  // NOTE: Keep these in sync! @@ -85,17 +85,17 @@ void main()      float rel_pos_len = length(rel_pos);      // Initialize temp variables -    vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color; -    vec4 light_atten; +    vec3 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color; +    vec3 light_atten;      // Sunlight attenuation effect (hue and brightness) due to atmosphere      // this is used later for sunlight modulation at various altitudes -    light_atten = (blue_density + vec4(haze_density * 0.25)) * (density_multiplier * max_y); +    light_atten = (blue_density + vec3(haze_density * 0.25)) * (density_multiplier * max_y);      // Calculate relative weights -    vec4 combined_haze = abs(blue_density) + vec4(abs(haze_density)); -    vec4 blue_weight   = blue_density / combined_haze; -    vec4 haze_weight   = haze_density / combined_haze; +    vec3 combined_haze = abs(blue_density) + vec4(abs(haze_density)); +    vec3 blue_weight   = blue_density / combined_haze; +    vec3 haze_weight   = haze_density / combined_haze;      // Compute sunlight from rel_pos & lightnorm (for long rays like sky)      float off_axis = 1.0 / max(1e-6, max(0., rel_pos_norm.y) + lightnorm.y); @@ -123,21 +123,21 @@ void main()      // For sun, add to glow.  For moon, remove glow entirely. SL-13768      haze_glow = (sun_moon_glow_factor < 1.0) ? 0.0 : (haze_glow + 0.25); -    vec4 color = +    vec3 color =          (blue_horizon * blue_weight * (sunlight + ambient_color) + (haze_horizon * haze_weight) * (sunlight * haze_glow + ambient_color));      // Final atmosphere additive      color *= (1. - combined_haze);      // Increase ambient when there are more clouds -    vec4 tmpAmbient = ambient_color; -    tmpAmbient += max(vec4(0), (1. - ambient_color)) * cloud_shadow * 0.5; +    vec3 tmpAmbient = ambient_color; +    tmpAmbient += max(vec3(0), (1. - ambient_color)) * cloud_shadow * 0.5;      // Dim sunlight by cloud shadow percentage      sunlight *= max(0.0, (1. - cloud_shadow));      // Haze color below cloud -    vec4 additiveColorBelowCloud = +    vec3 additiveColorBelowCloud =          (blue_horizon * blue_weight * (sunlight + tmpAmbient) + (haze_horizon * haze_weight) * (sunlight * haze_glow + tmpAmbient));      // Attenuate cloud color by atmosphere diff --git a/indra/newview/app_settings/shaders/class1/windlight/cloudShadowF.glsl b/indra/newview/app_settings/shaders/class1/windlight/cloudShadowF.glsl deleted file mode 100644 index 332fb9d809..0000000000 --- a/indra/newview/app_settings/shaders/class1/windlight/cloudShadowF.glsl +++ /dev/null @@ -1,126 +0,0 @@ -/**  - * @file class1/windlight/cloudShadowF.glsl - * - * $LicenseInfo:firstyear=2005&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2005, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ -  -#ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_color; -#else -#define frag_color gl_FragColor -#endif - -uniform sampler2D diffuseMap; - -VARYING vec4 pos; -VARYING float target_pos_x; -VARYING float vary_CloudDensity; -VARYING vec2 vary_texcoord0; -VARYING vec2 vary_texcoord1; -VARYING vec2 vary_texcoord2; -VARYING vec2 vary_texcoord3; - -uniform sampler2D cloud_noise_texture; -uniform sampler2D cloud_noise_texture_next; -uniform float blend_factor; -uniform vec4 cloud_pos_density1; -uniform vec4 cloud_pos_density2; -uniform vec4 sunlight_color; -uniform float cloud_shadow; -uniform float cloud_scale; -uniform float cloud_variance; -uniform vec3 camPosLocal; -uniform vec3 sun_dir; -uniform float sun_size; -uniform float far_z; - -#if !defined(DEPTH_CLAMP) -VARYING vec4 post_pos; -#endif - -vec4 cloudNoise(vec2 uv) -{ -   vec4 a = texture2D(cloud_noise_texture, uv); -   vec4 b = texture2D(cloud_noise_texture_next, uv); -   vec4 cloud_noise_sample = mix(a, b, blend_factor); -   return normalize(cloud_noise_sample); -} - -void main() -{ -    if (cloud_scale >= 0.0001) -    { -        // Set variables -        vec2 uv1 = vary_texcoord0.xy; -        vec2 uv2 = vary_texcoord1.xy; -        vec2 uv3 = vary_texcoord2.xy; -        float cloudDensity = 2.0 * (cloud_shadow - 0.25); -     -        vec2 uv4 = vary_texcoord3.xy; -     -        vec2 disturbance  = vec2(cloudNoise(uv1 / 8.0f).x, cloudNoise((uv3 + uv1) / 16.0f).x) * cloud_variance * (1.0f - cloud_scale * 0.25f); -        vec2 disturbance2 = vec2(cloudNoise((uv1 + uv3) / 4.0f).x, cloudNoise((uv4 + uv2) / 8.0f).x) * cloud_variance * (1.0f - cloud_scale * 0.25f); -     -        // Offset texture coords -        uv1 += cloud_pos_density1.xy + (disturbance * 0.2);    //large texture, visible density -        uv2 += cloud_pos_density1.xy;   //large texture, self shadow -        uv3 += cloud_pos_density2.xy;   //small texture, visible density -        uv4 += cloud_pos_density2.xy;   //small texture, self shadow -     -        float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0 + disturbance2.x + disturbance2.y) * 4.0); -     -        cloudDensity *= 1.0 - (density_variance * density_variance); -     -        // Compute alpha1, the main cloud opacity -        float alpha1 = (cloudNoise(uv1).x - 0.5) + (cloudNoise(uv3).x - 0.5) * cloud_pos_density2.z; -        alpha1 = min(max(alpha1 + cloudDensity, 0.) * 10 * cloud_pos_density1.z, 1.); -     -        // And smooth -        alpha1 = 1. - alpha1 * alpha1; -        alpha1 = 1. - alpha1 * alpha1;   -     -        if (alpha1 < 0.001f) -        { -            discard; -        } -     -        // Compute alpha2, for self shadowing effect -        // (1 - alpha2) will later be used as percentage of incoming sunlight -        float alpha2 = (cloudNoise(uv2).x - 0.5); -        alpha2 = min(max(alpha2 + cloudDensity, 0.) * 2.5 * cloud_pos_density1.z, 1.); -     -        // And smooth -        alpha2 = 1. - alpha2; -        alpha2 = 1. - alpha2 * alpha2;   -     -        frag_color = vec4(alpha1, alpha1, alpha1, 1); -    } -    else -    { -        frag_color = vec4(1); -    } - -#if !defined(DEPTH_CLAMP) -    gl_FragDepth = max(post_pos.z/post_pos.w*0.5+0.5, 0.0); -#endif - -} diff --git a/indra/newview/app_settings/shaders/class1/windlight/cloudShadowV.glsl b/indra/newview/app_settings/shaders/class1/windlight/cloudShadowV.glsl deleted file mode 100644 index 09b6004481..0000000000 --- a/indra/newview/app_settings/shaders/class1/windlight/cloudShadowV.glsl +++ /dev/null @@ -1,61 +0,0 @@ -/**  - * @file class1\windlight\cloudShadowV.glsl - * - * $LicenseInfo:firstyear=2011&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2011, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -uniform mat4 texture_matrix0; -uniform mat4 modelview_projection_matrix; -uniform float shadow_target_width; - -ATTRIBUTE vec3 position; -ATTRIBUTE vec4 diffuse_color; -ATTRIBUTE vec2 texcoord0; - -#if !defined(DEPTH_CLAMP) -VARYING float pos_zd2; -#endif - -VARYING vec4 pos; -VARYING float target_pos_x; -VARYING vec2 vary_texcoord0; - -void passTextureIndex(); - -void main() -{ -	//transform vertex -	vec4 pre_pos = vec4(position.xyz, 1.0); -	pos = modelview_projection_matrix * pre_pos; -	target_pos_x = 0.5 * (shadow_target_width - 1.0) * pos.x; - -#if !defined(DEPTH_CLAMP) -	pos_zd2 = pos.z * 0.5; -	gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w); -#else -	gl_Position = pos; -#endif -	 -	passTextureIndex(); - -	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; -} diff --git a/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl b/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl index 2425a2ad04..f03003f5e1 100644 --- a/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl @@ -34,8 +34,7 @@ out vec4 frag_color;  #endif  uniform vec4 color; -uniform vec4 sunlight_color; -uniform vec4 moonlight_color; +uniform vec3 moonlight_color;  uniform vec3 moon_dir;  uniform float moon_brightness;  uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl index 4379024680..668f70c3ab 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl @@ -32,13 +32,13 @@ uniform mat4 modelview_projection_matrix;  // Inputs  uniform vec3 camPosLocal; -uniform vec4  lightnorm; -uniform vec4  sunlight_color; -uniform vec4  moonlight_color; +uniform vec3  lightnorm; +uniform vec3  sunlight_color; +uniform vec3  moonlight_color;  uniform int   sun_up_factor; -uniform vec4  ambient_color; -uniform vec4  blue_horizon; -uniform vec4  blue_density; +uniform vec3  ambient_color; +uniform vec3  blue_horizon; +uniform vec3  blue_density;  uniform float haze_horizon;  uniform float haze_density; @@ -47,10 +47,10 @@ uniform float density_multiplier;  uniform float distance_multiplier;  uniform float max_y; -uniform vec4  glow; +uniform vec3  glow;  uniform float sun_moon_glow_factor; -uniform vec4 cloud_color; +uniform vec3 cloud_color;  #ifdef DEFINE_GL_FRAGCOLOR  out vec4 frag_data[3]; @@ -123,16 +123,16 @@ void main()      float rel_pos_len  = length(rel_pos);      // Initialize temp variables -    vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color; +    vec3 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color;      // Sunlight attenuation effect (hue and brightness) due to atmosphere      // this is used later for sunlight modulation at various altitudes -    vec4 light_atten = (blue_density + vec4(haze_density * 0.25)) * (density_multiplier * max_y); +    vec3 light_atten = (blue_density + vec3(haze_density * 0.25)) * (density_multiplier * max_y);      // Calculate relative weights -    vec4 combined_haze = abs(blue_density) + vec4(abs(haze_density)); -    vec4 blue_weight   = blue_density / combined_haze; -    vec4 haze_weight   = haze_density / combined_haze; +    vec3 combined_haze = abs(blue_density) + vec3(abs(haze_density)); +    vec3 blue_weight   = blue_density / combined_haze; +    vec3 haze_weight   = haze_density / combined_haze;      // Compute sunlight from rel_pos & lightnorm (for long rays like sky)      float off_axis = 1.0 / max(1e-6, max(0, rel_pos_norm.y) + lightnorm.y); @@ -162,7 +162,7 @@ void main()      haze_glow = (sun_moon_glow_factor < 1.0) ? 0.0 : (sun_moon_glow_factor * (haze_glow + 0.25));      // Haze color above cloud -    vec4 color = blue_horizon * blue_weight * (sunlight + ambient_color)  +    vec3 color = blue_horizon * blue_weight * (sunlight + ambient_color)                  + haze_horizon * haze_weight * (sunlight * haze_glow + ambient_color);      // Final atmosphere additive @@ -170,13 +170,13 @@ void main()      // Increase ambient when there are more clouds      // TODO 9/20: DJH what does this do?  max(0,(1-ambient)) will change the color -    vec4 ambient = ambient_color + max(vec4(0), (1. - ambient_color)) * cloud_shadow * 0.5; +    vec3 ambient = ambient_color + max(vec3(0), (1. - ambient_color)) * cloud_shadow * 0.5;      // Dim sunlight by cloud shadow percentage      sunlight *= max(0.0, (1. - cloud_shadow));      // Haze color below cloud -    vec4 add_below_cloud = blue_horizon * blue_weight * (sunlight + ambient)  +    vec3 add_below_cloud = blue_horizon * blue_weight * (sunlight + ambient)                            + haze_horizon * haze_weight * (sunlight * haze_glow + ambient);      // Attenuate cloud color by atmosphere diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsFuncs.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsFuncs.glsl index 8937488484..c69eba93b6 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsFuncs.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsFuncs.glsl @@ -23,17 +23,17 @@   * $/LicenseInfo$   */ -uniform vec4  lightnorm; -uniform vec4  sunlight_color; +uniform vec3  lightnorm; +uniform vec3  sunlight_color;  uniform vec3 sunlight_linear; -uniform vec4  moonlight_color; +uniform vec3  moonlight_color;  uniform vec3 moonlight_linear;  uniform int   sun_up_factor; -uniform vec4  ambient_color; +uniform vec3  ambient_color;  uniform vec3 ambient_linear; -uniform vec4  blue_horizon; +uniform vec3  blue_horizon;  uniform vec3 blue_horizon_linear; -uniform vec4  blue_density; +uniform vec3  blue_density;  uniform vec3 blue_density_linear;  uniform float haze_horizon;  uniform float haze_density; @@ -42,7 +42,7 @@ uniform float cloud_shadow;  uniform float density_multiplier;  uniform float distance_multiplier;  uniform float max_y; -uniform vec4  glow; +uniform vec3  glow;  uniform float scene_light_strength;  uniform mat3  ssao_effect_mat;  uniform int   no_atmo; @@ -63,17 +63,17 @@ void calcAtmosphericVars(vec3 inPositionEye, vec3 light_dir, float ambFactor, ou      vec3  rel_pos_norm = normalize(rel_pos);      float rel_pos_len  = length(rel_pos); -    vec4  sunlight     = (sun_up_factor == 1) ? sunlight_color : moonlight_color; +    vec3  sunlight     = (sun_up_factor == 1) ? sunlight_color : moonlight_color;      // sunlight attenuation effect (hue and brightness) due to atmosphere      // this is used later for sunlight modulation at various altitudes -    vec4 light_atten = (blue_density + vec4(haze_density * 0.25)) * (density_multiplier * max_y); +    vec3 light_atten = (blue_density + vec3(haze_density * 0.25)) * (density_multiplier * max_y);      // I had thought blue_density and haze_density should have equal weighting,      // but attenuation due to haze_density tends to seem too strong -    vec4 combined_haze = blue_density + vec4(haze_density); -    vec4 blue_weight   = blue_density / combined_haze; -    vec4 haze_weight   = vec4(haze_density) / combined_haze; +    vec3 combined_haze = blue_density + vec3(haze_density); +    vec3 blue_weight   = blue_density / combined_haze; +    vec3 haze_weight   = vec3(haze_density) / combined_haze;      //(TERRAIN) compute sunlight from lightnorm y component. Factor is roughly cosecant(sun elevation) (for short rays like terrain)      float above_horizon_factor = 1.0 / max(1e-6, lightnorm.y); @@ -111,10 +111,10 @@ void calcAtmosphericVars(vec3 inPositionEye, vec3 light_dir, float ambFactor, ou      haze_glow *= sun_moon_glow_factor; -    vec4 amb_color = ambient_color; +    vec3 amb_color = ambient_color;      // increase ambient when there are more clouds -    vec4 tmpAmbient = amb_color + (vec4(1.) - amb_color) * cloud_shadow * 0.5; +    vec3 tmpAmbient = amb_color + (vec3(1.) - amb_color) * cloud_shadow * 0.5;      /*  decrease value and saturation (that in HSV, not HSL) for occluded areas       * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html @@ -127,7 +127,7 @@ void calcAtmosphericVars(vec3 inPositionEye, vec3 light_dir, float ambFactor, ou       */      if (use_ao)      { -        tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a); +        tmpAmbient = mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor);      }      // Similar/Shared Algorithms: @@ -179,17 +179,17 @@ void calcAtmosphericVarsLinear(vec3 inPositionEye, vec3 norm, vec3 light_dir, ou      vec3  rel_pos_norm = normalize(rel_pos);      float rel_pos_len  = length(rel_pos); -    vec4  sunlight     = (sun_up_factor == 1) ? vec4(sunlight_linear, 0.0) : vec4(moonlight_linear, 0.0); +    vec3  sunlight     = (sun_up_factor == 1) ? vec3(sunlight_linear, 0.0) : vec3(moonlight_linear, 0.0);      // sunlight attenuation effect (hue and brightness) due to atmosphere      // this is used later for sunlight modulation at various altitudes -    vec4 light_atten = (blue_density + vec4(haze_density * 0.25)) * (density_multiplier * max_y); +    vec3 light_atten = (blue_density + vec3(haze_density * 0.25)) * (density_multiplier * max_y);      // I had thought blue_density and haze_density should have equal weighting,      // but attenuation due to haze_density tends to seem too strong -    vec4 combined_haze = blue_density + vec4(haze_density); -    vec4 blue_weight   = blue_density / combined_haze; -    vec4 haze_weight   = vec4(haze_density) / combined_haze; +    vec3 combined_haze = blue_density + vec3(haze_density); +    vec3 blue_weight   = blue_density / combined_haze; +    vec3 haze_weight   = vec3(haze_density) / combined_haze;      //(TERRAIN) compute sunlight from lightnorm y component. Factor is roughly cosecant(sun elevation) (for short rays like terrain)      float above_horizon_factor = 1.0 / max(1e-6, lightnorm.y); @@ -227,11 +227,11 @@ void calcAtmosphericVarsLinear(vec3 inPositionEye, vec3 norm, vec3 light_dir, ou      haze_glow *= sun_moon_glow_factor; -    //vec4 amb_color = vec4(ambient_linear, 0.0); -    vec4 amb_color = ambient_color; +    //vec3 amb_color = vec4(ambient_linear, 0.0); +    vec3 amb_color = ambient_color;      // increase ambient when there are more clouds -    vec4 tmpAmbient = amb_color + (vec4(1.) - amb_color) * cloud_shadow * 0.5; +    vec3 tmpAmbient = amb_color + (vec3(1.) - amb_color) * cloud_shadow * 0.5;      // Similar/Shared Algorithms:      //     indra\llinventory\llsettingssky.cpp                                        -- LLSettingsSky::calculateLightSettings() diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl index fa928d993e..9c5a4903d0 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl @@ -35,15 +35,15 @@ out vec4 frag_color;  // The fragment shader for the sky  ///////////////////////////////////////////////////////////////////////// -VARYING vec4 vary_CloudColorSun; -VARYING vec4 vary_CloudColorAmbient; +VARYING vec3 vary_CloudColorSun; +VARYING vec3 vary_CloudColorAmbient;  VARYING float vary_CloudDensity;  uniform sampler2D cloud_noise_texture;  uniform sampler2D cloud_noise_texture_next;  uniform float blend_factor; -uniform vec4 cloud_pos_density1; -uniform vec4 cloud_pos_density2; +uniform vec3 cloud_pos_density1; +uniform vec3 cloud_pos_density2;  uniform float cloud_scale;  uniform float cloud_variance; @@ -70,8 +70,8 @@ void main()      vec2 uv1 = vary_texcoord0.xy;      vec2 uv2 = vary_texcoord1.xy; -    vec4 cloudColorSun = vary_CloudColorSun; -    vec4 cloudColorAmbient = vary_CloudColorAmbient; +    vec3 cloudColorSun = vary_CloudColorSun; +    vec3 cloudColorAmbient = vary_CloudColorAmbient;      float cloudDensity = vary_CloudDensity;      vec2 uv3 = vary_texcoord2.xy;      vec2 uv4 = vary_texcoord3.xy; @@ -120,7 +120,7 @@ void main()      alpha2 = 1. - alpha2 * alpha2;        // Combine -    vec4 color; +    vec3 color;      color = (cloudColorSun*(1.-alpha2) + cloudColorAmbient);      color.rgb *= 2.;      color.rgb = scaleSoftClip(color.rgb); diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl index 97ffa9feef..650009d393 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl @@ -33,8 +33,8 @@ ATTRIBUTE vec2 texcoord0;  ///////////////////////////////////////////////////////////////////////////////  // Output parameters -VARYING vec4 vary_CloudColorSun; -VARYING vec4 vary_CloudColorAmbient; +VARYING vec3 vary_CloudColorSun; +VARYING vec3 vary_CloudColorAmbient;  VARYING float vary_CloudDensity;  VARYING vec2 vary_texcoord0; @@ -46,13 +46,13 @@ VARYING float altitude_blend_factor;  // Inputs  uniform vec3 camPosLocal; -uniform vec4 lightnorm; -uniform vec4 sunlight_color; -uniform vec4 moonlight_color; +uniform vec3 lightnorm; +uniform vec3 sunlight_color; +uniform vec3 moonlight_color;  uniform int sun_up_factor; -uniform vec4 ambient_color; -uniform vec4 blue_horizon; -uniform vec4 blue_density; +uniform vec3 ambient_color; +uniform vec3 blue_horizon; +uniform vec3 blue_density;  uniform float haze_horizon;  uniform float haze_density; @@ -60,10 +60,10 @@ uniform float cloud_shadow;  uniform float density_multiplier;  uniform float max_y; -uniform vec4 glow; +uniform vec3 glow;  uniform float sun_moon_glow_factor; -uniform vec4 cloud_color; +uniform vec3 cloud_color;  uniform float cloud_scale; @@ -114,17 +114,17 @@ void main()      float rel_pos_len  = length(rel_pos);  	// Initialize temp variables -	vec4 sunlight = sunlight_color; -	vec4 light_atten; +	vec3 sunlight = sunlight_color; +	vec3 light_atten;  	// Sunlight attenuation effect (hue and brightness) due to atmosphere  	// this is used later for sunlight modulation at various altitudes -    light_atten = (blue_density + vec4(haze_density * 0.25)) * (density_multiplier * max_y); +    light_atten = (blue_density + vec3(haze_density * 0.25)) * (density_multiplier * max_y);  	// Calculate relative weights -    vec4 combined_haze = abs(blue_density) + vec4(abs(haze_density)); -    vec4 blue_weight   = blue_density / combined_haze; -    vec4 haze_weight   = haze_density / combined_haze; +    vec3 combined_haze = abs(blue_density) + vec3(abs(haze_density)); +    vec3 blue_weight   = blue_density / combined_haze; +    vec3 haze_weight   = haze_density / combined_haze;      // Compute sunlight from rel_pos & lightnorm (for long rays like sky)      float off_axis = 1.0 / max(1e-6, max(0., rel_pos_norm.y) + lightnorm.y); @@ -155,14 +155,14 @@ void main()      haze_glow = (sun_moon_glow_factor < 1.0) ? 0.0 : (haze_glow + 0.25);  	// Increase ambient when there are more clouds -	vec4 tmpAmbient = ambient_color; +	vec3 tmpAmbient = ambient_color;  	tmpAmbient += (1. - tmpAmbient) * cloud_shadow * 0.5;   	// Dim sunlight by cloud shadow percentage  	sunlight *= (1. - cloud_shadow);  	// Haze color below cloud -    vec4 additiveColorBelowCloud = +    vec3 additiveColorBelowCloud =          (blue_horizon * blue_weight * (sunlight + tmpAmbient) + (haze_horizon * haze_weight) * (sunlight * haze_glow + tmpAmbient));  	// CLOUDS @@ -178,7 +178,7 @@ void main()      combined_haze = sqrt(combined_haze);  // less atmos opacity (more transparency) below clouds      vary_CloudColorSun *= combined_haze;      vary_CloudColorAmbient *= combined_haze; -    vec4 oHazeColorBelowCloud = additiveColorBelowCloud * (1. - combined_haze); +    vec3 oHazeColorBelowCloud = additiveColorBelowCloud * (1. - combined_haze);  	// Make a nice cloud density based on the cloud_shadow value that was passed in.  	vary_CloudDensity = 2. * (cloud_shadow - 0.25); diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl index 3edc94f4ca..8f7726bb0b 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl @@ -32,18 +32,18 @@ ATTRIBUTE vec3 position;  ///////////////////////////////////////////////////////////////////////////////  // Output parameters -VARYING vec4 vary_HazeColor; +VARYING vec3 vary_HazeColor;  // Inputs  uniform vec3 camPosLocal; -uniform vec4  lightnorm; -uniform vec4  sunlight_color; -uniform vec4  moonlight_color; +uniform vec3  lightnorm; +uniform vec3  sunlight_color; +uniform vec3  moonlight_color;  uniform int   sun_up_factor; -uniform vec4  ambient_color; -uniform vec4  blue_horizon; -uniform vec4  blue_density; +uniform vec3  ambient_color; +uniform vec3  blue_horizon; +uniform vec3  blue_density;  uniform float haze_horizon;  uniform float haze_density; @@ -52,7 +52,7 @@ uniform float density_multiplier;  uniform float distance_multiplier;  uniform float max_y; -uniform vec4  glow; +uniform vec3  glow;  uniform float sun_moon_glow_factor;  void main() @@ -81,17 +81,17 @@ void main()      float rel_pos_len = length(rel_pos);      // Initialize temp variables -    vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color; -    vec4 light_atten; +    vec3 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color; +    vec3 light_atten;      // Sunlight attenuation effect (hue and brightness) due to atmosphere      // this is used later for sunlight modulation at various altitudes -    light_atten = (blue_density + vec4(haze_density * 0.25)) * (density_multiplier * max_y); +    light_atten = (blue_density + vec3(haze_density * 0.25)) * (density_multiplier * max_y);      // Calculate relative weights -    vec4 combined_haze = abs(blue_density) + vec4(abs(haze_density)); -    vec4 blue_weight   = blue_density / combined_haze; -    vec4 haze_weight   = haze_density / combined_haze; +    vec3 combined_haze = abs(blue_density) + vec3(abs(haze_density)); +    vec3 blue_weight   = blue_density / combined_haze; +    vec3 haze_weight   = haze_density / combined_haze;      // Compute sunlight from rel_pos & lightnorm (for long rays like sky)      float off_axis = 1.0 / max(1e-6, max(0., rel_pos_norm.y) + lightnorm.y); @@ -119,21 +119,21 @@ void main()      // For sun, add to glow.  For moon, remove glow entirely. SL-13768      haze_glow = (sun_moon_glow_factor < 1.0) ? 0.0 : (haze_glow + 0.25); -    vec4 color = +    vec3 color =          (blue_horizon * blue_weight * (sunlight + ambient_color) + (haze_horizon * haze_weight) * (sunlight * haze_glow + ambient_color));      // Final atmosphere additive      color *= (1. - combined_haze);      // Increase ambient when there are more clouds -    vec4 tmpAmbient = ambient_color; -    tmpAmbient += max(vec4(0), (1. - ambient_color)) * cloud_shadow * 0.5; +    vec3 tmpAmbient = ambient_color; +    tmpAmbient += max(vec3(0), (1. - ambient_color)) * cloud_shadow * 0.5;      // Dim sunlight by cloud shadow percentage      sunlight *= max(0.0, (1. - cloud_shadow));      // Haze color below cloud -    vec4 additiveColorBelowCloud = +    vec3 additiveColorBelowCloud =          (blue_horizon * blue_weight * (sunlight + tmpAmbient) + (haze_horizon * haze_weight) * (sunlight * haze_glow + tmpAmbient));      // Attenuate cloud color by atmosphere diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp index fc8df01002..18e405b171 100644 --- a/indra/newview/lldrawpoolwater.cpp +++ b/indra/newview/lldrawpoolwater.cpp @@ -670,7 +670,7 @@ void LLDrawPoolWater::renderWater()          shader->uniform1i(LLShaderMgr::WATER_EDGE_FACTOR, edge ? 1 : 0);          LLVector4 rotated_light_direction = LLEnvironment::instance().getRotatedLightNorm(); -        shader->uniform4fv(LLViewerShaderMgr::LIGHTNORM, 1, rotated_light_direction.mV); +        shader->uniform3fv(LLViewerShaderMgr::LIGHTNORM, 1, rotated_light_direction.mV);          shader->uniform3fv(LLShaderMgr::WL_CAMPOSLOCAL, 1, LLViewerCamera::getInstance()->getOrigin().mV);          if (LLViewerCamera::getInstance()->cameraUnderWater()) diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index 9873846669..7157214cbc 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -547,7 +547,7 @@ void LLDrawPoolWLSky::renderHeavenlyBodies()              F32 moon_brightness = (float)psky->getMoonBrightness();              moon_shader->uniform1f(LLShaderMgr::MOON_BRIGHTNESS, moon_brightness); -            moon_shader->uniform4fv(LLShaderMgr::MOONLIGHT_COLOR, 1, gSky.mVOSkyp->getMoon().getColor().mV); +            moon_shader->uniform3fv(LLShaderMgr::MOONLIGHT_COLOR, 1, gSky.mVOSkyp->getMoon().getColor().mV);              moon_shader->uniform4fv(LLShaderMgr::DIFFUSE_COLOR, 1, color.mV);              //moon_shader->uniform1f(LLShaderMgr::BLEND_FACTOR, blend_factor);              moon_shader->uniform3fv(LLShaderMgr::DEFERRED_MOON_DIR, 1, psky->getMoonDirection().mV); // shader: moon_dir diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index ae43203fa1..91006c9116 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -1749,7 +1749,7 @@ void LLEnvironment::updateGLVariablesForSettings(LLShaderUniforms* uniforms, con                  break;              }              //_WARNS("RIDER") << "pushing '" << (*it).first << "' as " << vect4 << LL_ENDL; -            shader->uniform4fv(it.second.getShaderKey(), vect4 ); +            shader->uniform3fv(it.second.getShaderKey(), LLVector3(vect4.mV) );              break;          } diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp index fdd988ddc0..3c43a7e625 100644 --- a/indra/newview/llsettingsvo.cpp +++ b/indra/newview/llsettingsvo.cpp @@ -667,17 +667,17 @@ void LLSettingsVOSky::updateSettings()  void LLSettingsVOSky::applySpecial(void *ptarget, bool force)  {      LL_PROFILE_ZONE_SCOPED_CATEGORY_SHADER; -    LLVector4 light_direction = LLEnvironment::instance().getClampedLightNorm(); +    LLVector3 light_direction = LLVector3(LLEnvironment::instance().getClampedLightNorm().mV);      LLShaderUniforms* shader = &((LLShaderUniforms*)ptarget)[LLGLSLShader::SG_DEFAULT];  	{         -        shader->uniform4fv(LLViewerShaderMgr::LIGHTNORM, light_direction); +        shader->uniform3fv(LLViewerShaderMgr::LIGHTNORM, light_direction);          shader->uniform3fv(LLShaderMgr::WL_CAMPOSLOCAL, LLViewerCamera::getInstance()->getOrigin());  	}       shader = &((LLShaderUniforms*)ptarget)[LLGLSLShader::SG_SKY];  	{ -        shader->uniform4fv(LLViewerShaderMgr::LIGHTNORM, light_direction); +        shader->uniform3fv(LLViewerShaderMgr::LIGHTNORM, light_direction);          // Legacy? SETTING_CLOUD_SCROLL_RATE("cloud_scroll_rate")          LLVector4 vect_c_p_d1(mSettings[SETTING_CLOUD_POS_DENSITY1]); @@ -690,26 +690,26 @@ void LLSettingsVOSky::applySpecial(void *ptarget, bool force)          // * indra\newview\app_settings\shaders\class1\deferred\cloudsV.glsl          cloud_scroll[0] = -cloud_scroll[0];          vect_c_p_d1 += cloud_scroll; -        shader->uniform4fv(LLShaderMgr::CLOUD_POS_DENSITY1, vect_c_p_d1); +        shader->uniform3fv(LLShaderMgr::CLOUD_POS_DENSITY1, LLVector3(vect_c_p_d1.mV));          LLSettingsSky::ptr_t psky = LLEnvironment::instance().getCurrentSky(); -        LLVector4 sunDiffuse = LLVector4(psky->getSunlightColor().mV); -        LLVector4 moonDiffuse = LLVector4(psky->getMoonlightColor().mV); +        // TODO -- make these getters return vec3s +        LLVector3 sunDiffuse = LLVector3(psky->getSunlightColor().mV); +        LLVector3 moonDiffuse = LLVector3(psky->getMoonlightColor().mV); -        shader->uniform4fv(LLShaderMgr::SUNLIGHT_COLOR, sunDiffuse); -        shader->uniform4fv(LLShaderMgr::MOONLIGHT_COLOR, moonDiffuse); +        shader->uniform3fv(LLShaderMgr::SUNLIGHT_COLOR, sunDiffuse); +        shader->uniform3fv(LLShaderMgr::MOONLIGHT_COLOR, moonDiffuse); -        LLVector4 cloud_color(LLVector3(psky->getCloudColor().mV), 1.0); -        shader->uniform4fv(LLShaderMgr::CLOUD_COLOR, cloud_color); +        shader->uniform3fv(LLShaderMgr::CLOUD_COLOR, LLVector3(psky->getCloudColor().mV));  	}      shader = &((LLShaderUniforms*)ptarget)[LLGLSLShader::SG_ANY];      shader->uniform1f(LLShaderMgr::SCENE_LIGHT_STRENGTH, mSceneLightStrength); -    LLColor4 ambient(getTotalAmbient()); +    LLColor3 ambient(getTotalAmbient()); -    shader->uniform4fv(LLShaderMgr::AMBIENT, LLVector4(ambient.mV)); +    shader->uniform3fv(LLShaderMgr::AMBIENT, LLVector3(ambient.mV));      shader->uniform3fv(LLShaderMgr::AMBIENT_LINEAR, linearColor3v(getAmbientColor()/3.f)); // note magic number 3.f comes from SLIDER_SCALE_SUN_AMBIENT      shader->uniform3fv(LLShaderMgr::SUNLIGHT_LINEAR, linearColor3v(getSunlightColor()));      shader->uniform3fv(LLShaderMgr::MOONLIGHT_LINEAR,linearColor3v(getMoonlightColor())); @@ -972,7 +972,7 @@ void LLSettingsVOWater::applySpecial(void *ptarget, bool force)          shader->uniform1f(LLShaderMgr::BLEND_FACTOR, blend_factor);          // update to normal lightnorm, water shader itself will use rotated lightnorm as necessary -        shader->uniform4fv(LLShaderMgr::LIGHTNORM, light_direction.mV); +        shader->uniform3fv(LLShaderMgr::LIGHTNORM, light_direction.mV);      }  } diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 2f4ab3ac45..d8af012cc0 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -8484,8 +8484,8 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, LLRenderTarget* light_  		shader.uniformMatrix4fv(LLShaderMgr::DEFERRED_NORM_MATRIX, 1, FALSE, norm_mat.m);  	} -    shader.uniform4fv(LLShaderMgr::SUNLIGHT_COLOR, 1, mSunDiffuse.mV); -    shader.uniform4fv(LLShaderMgr::MOONLIGHT_COLOR, 1, mMoonDiffuse.mV); +    shader.uniform3fv(LLShaderMgr::SUNLIGHT_COLOR, 1, mSunDiffuse.mV); +    shader.uniform3fv(LLShaderMgr::MOONLIGHT_COLOR, 1, mMoonDiffuse.mV);      LLEnvironment& environment = LLEnvironment::instance();      LLSettingsSky::ptr_t sky = environment.getCurrentSky(); @@ -8735,7 +8735,7 @@ void LLPipeline::renderDeferredLighting()              LLEnvironment &environment = LLEnvironment::instance();              soften_shader.uniform1i(LLShaderMgr::SUN_UP_FACTOR, environment.getIsSunUp() ? 1 : 0); -            soften_shader.uniform4fv(LLShaderMgr::LIGHTNORM, 1, environment.getClampedLightNorm().mV); +            soften_shader.uniform3fv(LLShaderMgr::LIGHTNORM, 1, environment.getClampedLightNorm().mV);              if (!LLPipeline::sUnderWaterRender && LLPipeline::sRenderPBR)              { | 
