diff options
Diffstat (limited to 'indra/newview/app_settings/shaders/class2')
5 files changed, 32 insertions, 10 deletions
| diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 9f56bff4c2..5046ede00d 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -49,7 +49,6 @@ uniform vec4 morphFactor;  uniform vec3 camPosLocal;  //uniform vec4 camPosWorld;  uniform vec4 gamma; -uniform vec4 lightnorm;  uniform vec4 sunlight_color;  uniform vec4 ambient;  uniform vec4 blue_horizon; @@ -68,6 +67,7 @@ uniform vec4 shadow_clip;  uniform mat3 ssao_effect_mat;  uniform vec3 sun_dir; +uniform vec3 moon_dir;  VARYING vec2 vary_fragcoord;  uniform mat4 inv_proj; @@ -117,7 +117,9 @@ void main()  	float envIntensity = norm.z;  	norm.xyz = decode_normal(norm.xy); // unpack norm -	float da = max(dot(norm.xyz, sun_dir.xyz), 0.0); +	float da_sun = max(dot(norm.xyz, sun_dir.xyz), 0.0); +	float da_moon = max(dot(norm.xyz, moon_dir.xyz), 0.0); +	float da = max(da_sun, da_moon);  	float light_gamma = 1.0/1.3;  	da = pow(da, light_gamma); @@ -168,7 +170,9 @@ void main()  			// the old infinite-sky shiny reflection  			// -			float sa = dot(refnormpersp, sun_dir.xyz); +			float sa_sun = dot(refnormpersp, sun_dir.xyz); +			float sa_moon = dot(refnormpersp, moon_dir.xyz); +			float sa = max(sa_sun, sa_moon);  			vec3 dumbshiny = sunlit*scol_ambocc.r*(texture2D(lightFunc, vec2(sa, spec.a)).r);  			// add the two types of shiny together diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl index aa5e99a2f7..11ccdf638c 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl @@ -59,6 +59,7 @@ uniform mat4 inv_proj;  uniform vec2 screen_res;  uniform vec2 proj_shadow_res;  uniform vec3 sun_dir; +uniform vec3 moon_dir;  uniform vec2 shadow_res;  uniform float shadow_bias; @@ -139,10 +140,14 @@ void main()  	}*/  	float shadow = 0.0; -	float dp_directional_light = max(0.0, dot(norm, sun_dir.xyz)); +    float da_sun = dot(norm, sun_dir.xyz); +    float da_moon = dot(norm, moon_dir.xyz); +    float da = max(da_sun, da_moon); + +	float dp_directional_light = max(0.0, da);  	vec3 shadow_pos = pos.xyz; -	vec3 offset = sun_dir.xyz * (1.0-dp_directional_light); +	vec3 offset = ((da_sun > da_moon) ? sun_dir.xyz  : moon_dir.xyz) * (1.0-dp_directional_light);  	vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0); diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl index 58f3f2f91e..4fccb1d33c 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl @@ -59,6 +59,7 @@ uniform mat4 inv_proj;  uniform vec2 screen_res;  uniform vec2 proj_shadow_res;  uniform vec3 sun_dir; +uniform vec3 moon_dir;  uniform vec2 shadow_res; @@ -200,10 +201,13 @@ void main()  	}*/  	float shadow = 0.0; -	float dp_directional_light = max(0.0, dot(norm, sun_dir.xyz)); +    float da_sun = dot(norm, sun_dir.xyz); +    float da_moon = dot(norm, moon_dir.xyz); +    float da = max(da_sun, da_moon); +	float dp_directional_light = max(0.0, da);  	vec3 shadow_pos = pos.xyz; -	vec3 offset = sun_dir.xyz * (1.0-dp_directional_light); +	vec3 offset = ((da_sun > da_moon) ? sun_dir.xyz : moon_dir.xyz) * (1.0-dp_directional_light);  	vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0); diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl index 96c70651b1..e0c7e18a6f 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl @@ -42,6 +42,8 @@ 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 gamma; @@ -55,6 +57,14 @@ vec3 scaleSoftClip(vec3 light) {  	return light;  } +vec4 cloudNoise(vec2 uv) +{ +    vec4 a = texture2D(cloud_noise_texture, uv); +    vec4 b = texture2D(cloud_noise_texture_next, uv); +    vec4 samp = mix(a, b, blend_factor); +	return samp; +} +  void main()  {  	// Set variables @@ -75,7 +85,7 @@ void main()  	// Compute alpha1, the main cloud opacity -	float alpha1 = (texture2D(cloud_noise_texture, uv1).x - 0.5) + (texture2D(cloud_noise_texture, uv3).x - 0.5) * cloud_pos_density2.z; +	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 @@ -85,7 +95,7 @@ void main()  	// Compute alpha2, for self shadowing effect  	// (1 - alpha2) will later be used as percentage of incoming sunlight -	float alpha2 = (texture2D(cloud_noise_texture, uv2).x - 0.5); +	float alpha2 = (cloudNoise(uv2).x - 0.5);  	alpha2 = min(max(alpha2 + cloudDensity, 0.) * 2.5 * cloud_pos_density1.z, 1.);  	// And smooth diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl index 2a0ca35278..25fd0584f8 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl @@ -35,7 +35,6 @@ out vec4 frag_color;  VARYING vec4 vary_HazeColor; -uniform sampler2D cloud_noise_texture;  uniform vec4 gamma;  /// Soft clips the light with a gamma correction | 
