- gl_FrontColor = gl_BackColor = gl_Color;\r
- //gl_FrontColor = gl_BackColor = vec4(1.0, 1.0, 1.0, 1.0);\r
+ vec4 color;\r
+ //color = vec4(1.0, 1.0, 1.0, 1.0);\r
+\r
+ float day = gl_Color.r;\r
+ float night = gl_Color.g;\r
+ float light_source = gl_Color.b;\r
+\r
+ /*color.r = mix(night, day, dayNightRatio);\r
+ color.g = color.r;\r
+ color.b = color.r;*/\r
+\r
+ float rg = mix(night, day, dayNightRatio);\r
+ rg += light_source * 1.0; // Make light sources brighter\r
+ float b = rg;\r
+\r
+ // Moonlight is blue\r
+ b += (day - night) / 13.0;\r
+ rg -= (day - night) / 13.0;\r
+\r
+ // Emphase blue a bit in darker places\r
+ // See C++ implementation in mapblock_mesh.cpp finalColorBlend()\r
+ b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025);\r
+\r
+ // Artificial light is yellow-ish\r
+ // See C++ implementation in mapblock_mesh.cpp finalColorBlend()\r
+ rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065);\r
+\r
+ color.r = rg;\r
+ color.g = rg;\r
+ color.b = b;\r
+\r
+ color.a = gl_Color.a;\r
+\r
+ gl_FrontColor = gl_BackColor = color;\r