commit
4af0b06ca6
|
|
@ -38,8 +38,6 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
|
|||
|
||||
vec3 atmosAmbient(vec3 light);
|
||||
vec3 atmosAffectDirectionalLight(float lightIntensity);
|
||||
vec3 scaleDownLight(vec3 light);
|
||||
vec3 scaleUpLight(vec3 light);
|
||||
|
||||
VARYING vec3 vary_position;
|
||||
VARYING vec3 vary_ambient;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -36,9 +36,6 @@ void calcAtmospherics(vec3 inPositionEye);
|
|||
|
||||
vec3 atmosAmbient(vec3 light);
|
||||
vec3 atmosAffectDirectionalLight(float lightIntensity);
|
||||
vec3 scaleDownLight(vec3 light);
|
||||
vec3 scaleUpLight(vec3 light);
|
||||
|
||||
|
||||
VARYING vec4 vertex_color;
|
||||
VARYING vec2 vary_texcoord0;
|
||||
|
|
|
|||
|
|
@ -37,8 +37,6 @@ void calcAtmospherics(vec3 inPositionEye);
|
|||
|
||||
vec3 atmosAmbient(vec3 light);
|
||||
vec3 atmosAffectDirectionalLight(float lightIntensity);
|
||||
vec3 scaleDownLight(vec3 light);
|
||||
vec3 scaleUpLight(vec3 light);
|
||||
|
||||
#ifdef WATER_FOG
|
||||
VARYING vec3 vary_position;
|
||||
|
|
|
|||
|
|
@ -47,9 +47,3 @@ vec3 scaleDownLight(vec3 light)
|
|||
return light;
|
||||
}
|
||||
|
||||
vec3 scaleUpLight(vec3 light)
|
||||
{
|
||||
/* stub function for fallback compatibility on class1 hardware */
|
||||
return light;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,9 +47,3 @@ vec3 scaleDownLight(vec3 light)
|
|||
return light;
|
||||
}
|
||||
|
||||
vec3 scaleUpLight(vec3 light)
|
||||
{
|
||||
/* stub function for fallback compatibility on class1 hardware */
|
||||
return light;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,9 +26,7 @@
|
|||
vec3 getAdditiveColor();
|
||||
vec3 getAtmosAttenuation();
|
||||
|
||||
uniform sampler2D cloudMap;
|
||||
uniform vec4 gamma;
|
||||
uniform vec4 cloud_pos_density1;
|
||||
uniform vec4 lightnorm;
|
||||
uniform vec4 sunlight_color;
|
||||
uniform vec4 ambient;
|
||||
|
|
|
|||
|
|
@ -42,8 +42,3 @@ vec3 scaleDownLightFrag(vec3 light)
|
|||
return (light / scene_light_strength );
|
||||
}
|
||||
|
||||
vec3 scaleUpLightFrag(vec3 light)
|
||||
{
|
||||
return (light * scene_light_strength);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -54,8 +54,3 @@ vec3 scaleDownLight(vec3 light)
|
|||
return (light / scene_light_strength );
|
||||
}
|
||||
|
||||
vec3 scaleUpLight(vec3 light)
|
||||
{
|
||||
return (light * scene_light_strength);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,8 +30,6 @@
|
|||
vec3 getAdditiveColor();
|
||||
vec3 getAtmosAttenuation();
|
||||
|
||||
uniform sampler2D cloudMap;
|
||||
uniform vec4 cloud_pos_density1;
|
||||
uniform int no_atmo;
|
||||
|
||||
vec3 atmosFragTransport(vec3 light, vec3 atten, vec3 additive) {
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
|
|||
vec3 atmosAmbient(vec3 light);
|
||||
vec3 atmosAffectDirectionalLight(float lightIntensity);
|
||||
vec3 scaleDownLight(vec3 light);
|
||||
vec3 scaleUpLight(vec3 light);
|
||||
|
||||
uniform vec4 light_position[8];
|
||||
uniform vec3 light_direction[8];
|
||||
|
|
|
|||
|
|
@ -26,9 +26,7 @@
|
|||
vec3 getAdditiveColor();
|
||||
vec3 getAtmosAttenuation();
|
||||
|
||||
uniform sampler2D cloudMap;
|
||||
uniform vec4 gamma;
|
||||
uniform vec4 cloud_pos_density1;
|
||||
uniform vec4 lightnorm;
|
||||
uniform vec4 sunlight_color;
|
||||
uniform vec4 ambient;
|
||||
|
|
|
|||
|
|
@ -30,8 +30,6 @@
|
|||
vec3 getAdditiveColor();
|
||||
vec3 getAtmosAttenuation();
|
||||
|
||||
uniform sampler2D cloudMap;
|
||||
uniform vec4 cloud_pos_density1;
|
||||
uniform int no_atmo;
|
||||
|
||||
vec3 atmosFragTransport(vec3 light, vec3 atten, vec3 additive) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue