Skip to content
Permalink
Browse files

Let lighting be done only CPU side. Remove finalColorBlend implementa…

…tion from shaders.
  • Loading branch information
RealBadAngel committed Aug 16, 2014
1 parent 0a57b5b commit bf91d623c8fc1fede7b600d1b0f4be1bc6b37c44
@@ -97,31 +97,5 @@ void main(void)
eyeVec = (gl_ModelViewMatrix * gl_Vertex).xyz;
tsEyeVec = eyeVec * tbnMatrix;

vec4 color;
float day = gl_Color.r;
float night = gl_Color.g;
float light_source = gl_Color.b;

float rg = mix(night, day, dayNightRatio);
rg += light_source * 2.5; // Make light sources brighter
float b = rg;

// Moonlight is blue
b += (day - night) / 13.0;
rg -= (day - night) / 23.0;

// Emphase blue a bit in darker places
// See C++ implementation in mapblock_mesh.cpp finalColorBlend()
b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025);

// Artificial light is yellow-ish
// See C++ implementation in mapblock_mesh.cpp finalColorBlend()
rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065);

color.r = rg;
color.g = rg;
color.b = b;

color.a = gl_Color.a;
gl_FrontColor = gl_BackColor = clamp(color,0.0,1.0);
gl_FrontColor = gl_BackColor = gl_Color;
}
@@ -97,31 +97,5 @@ void main(void)
eyeVec = (gl_ModelViewMatrix * gl_Vertex).xyz;
tsEyeVec = eyeVec * tbnMatrix;

vec4 color;
float day = gl_Color.r;
float night = gl_Color.g;
float light_source = gl_Color.b;

float rg = mix(night, day, dayNightRatio);
rg += light_source * 2.5; // Make light sources brighter
float b = rg;

// Moonlight is blue
b += (day - night) / 13.0;
rg -= (day - night) / 13.0;

// Emphase blue a bit in darker places
// See C++ implementation in mapblock_mesh.cpp finalColorBlend()
b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025);

// Artificial light is yellow-ish
// See C++ implementation in mapblock_mesh.cpp finalColorBlend()
rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065);

color.r = rg;
color.g = rg;
color.b = b;

color.a = gl_Color.a;
gl_FrontColor = gl_BackColor = clamp(color,0.0,1.0);
gl_FrontColor = gl_BackColor = gl_Color;
}
@@ -1158,16 +1158,13 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data, v3s16 camera_offset):
applyFacesShading (vc, 0.836660);
}
}
if(!enable_shaders)
{
// - Classic lighting (shaders handle this by themselves)
// Set initial real color and store for later updates
u8 day = vc.getRed();
u8 night = vc.getGreen();
finalColorBlend(vc, day, night, 1000);
if(day != night)
m_daynight_diffs[i][j] = std::make_pair(day, night);
}
// - Classic lighting
// Set initial real color and store for later updates
u8 day = vc.getRed();
u8 night = vc.getGreen();
finalColorBlend(vc, day, night, 1000);
if(day != night)
m_daynight_diffs[i][j] = std::make_pair(day, night);
}

// Create material

1 comment on commit bf91d62

@HybridDog

This comment has been minimized.

Copy link
Contributor

HybridDog commented on bf91d62 Aug 16, 2014

Does this disable blue moonlight?

Please sign in to comment.
You can’t perform that action at this time.