diff options
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl | 14 | 
1 files changed, 9 insertions, 5 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl index caedd25221..fe69233e68 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl @@ -75,19 +75,23 @@ void main()  	vec2 uv3 = vary_texcoord2.xy;  	vec2 uv4 = vary_texcoord3.xy; -    vec2 disturbance = vec2(cloudNoise(uv1 / 16.0f).x, cloudNoise((uv3 + uv1) / 16.0f).x) * cloud_variance * (1.0f - cloud_scale * 0.25f); +    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;	//large texture, visible density +	uv1 += cloud_pos_density1.xy + (disturbance * 0.02);	//large texture, visible density  	uv2 += cloud_pos_density1.xy;	//large texture, self shadow -	uv3 += cloud_pos_density2.xy + disturbance;	//small texture, visible density +	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)); + +    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. + disturbance.y) * cloud_pos_density1.z, 1.); +	alpha1 = min(max(alpha1 + cloudDensity, 0.) * 10 * cloud_pos_density1.z, 1.);  	// And smooth  	alpha1 = 1. - alpha1 * alpha1; @@ -101,7 +105,7 @@ void main()  	// 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 + disturbance.x) * cloud_pos_density1.z, 1.); +	alpha2 = min(max(alpha2 + cloudDensity, 0.) * 2.5 * cloud_pos_density1.z, 1.);  	// And smooth  	alpha2 = 1. - alpha2; | 
