Skip to content
Snippets Groups Projects
Commit 2c964e82 authored by Michael Pohoreski's avatar Michael Pohoreski
Browse files

Merged in SL-13465 (pull request #239)

Approved-by: Dave Houlton
parents 8189c900 f156730f
No related branches found
No related tags found
No related merge requests found
......@@ -45,6 +45,12 @@ uniform float blend_factor; // interp factor between moon A/B
VARYING vec2 vary_texcoord0;
vec3 srgb_to_linear(vec3 c);
vec3 getAdditiveColor();
/// Soft clips the light with a gamma correction
vec3 scaleSoftClip(vec3 light);
void main()
{
vec4 moonA = texture2D(diffuseMap, vary_texcoord0.xy);
......@@ -58,13 +64,19 @@ void main()
vec3 luma_weights = vec3(0.3, 0.5, 0.3);
vec4 light_color = max(sunlight_color, moonlight_color);
float mix = 1.0 - dot(normalize(light_color.rgb), luma_weights);
float blend = 1.0 - dot(normalize(light_color.rgb), luma_weights);
vec3 exp = vec3(1.0 - mix * moon_brightness) * 2.0 - 1.0;
vec3 exp = vec3(1.0 - blend * moon_brightness) * 2.0 - 1.0;
c.rgb = pow(c.rgb, exp);
//c.rgb *= moonlight_color.rgb;
// Partial atmospherics calculation
vec3 ac = getAdditiveColor();
c.rgb += ac;
c.rgb = scaleSoftClip(c.rgb);
frag_data[0] = vec4(c.rgb, c.a);
frag_data[1] = vec4(0.0);
frag_data[2] = vec4(0.0f);
......
......@@ -44,6 +44,9 @@ uniform sampler2D altDiffuseMap;
uniform float blend_factor; // interp factor between moon A/B
VARYING vec2 vary_texcoord0;
vec3 getAdditiveColor();
vec3 scaleSoftClip(vec3 light);
void main()
{
vec4 moonA = texture2D(diffuseMap, vary_texcoord0.xy);
......@@ -53,12 +56,18 @@ void main()
// mix factor which blends when sunlight is brighter
// and shows true moon color at night
vec3 luma_weights = vec3(0.3, 0.5, 0.3);
float mix = 1.0f - dot(normalize(sunlight_color.rgb), luma_weights);
float blend = 1.0f - dot(normalize(sunlight_color.rgb), luma_weights);
vec3 exp = vec3(1.0 - mix * moon_brightness) * 2.0 - 1.0;
vec3 exp = vec3(1.0 - blend * moon_brightness) * 2.0 - 1.0;
c.rgb = pow(c.rgb, exp);
//c.rgb *= moonlight_color.rgb;
// Partial atmospherics calculation
vec3 ac = getAdditiveColor();
c.rgb += ac;
c.rgb = scaleSoftClip(c.rgb);
frag_color = vec4(c.rgb, c.a);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment