Replace CRLF with LF in shader files
authorest31 <MTest31@outlook.com>
Fri, 25 Mar 2016 14:57:18 +0000 (15:57 +0100)
committerest31 <MTest31@outlook.com>
Fri, 25 Mar 2016 14:57:18 +0000 (15:57 +0100)
client/shaders/default_shader/opengl_vertex.glsl
client/shaders/nodes_shader/opengl_vertex.glsl
client/shaders/selection_shader/opengl_vertex.glsl
client/shaders/water_surface_shader/opengl_vertex.glsl
client/shaders/wielded_shader/opengl_vertex.glsl

index 0f4609177d8604bbe33b9e2287ba15db5fe7cb52..d0b16c8b0274b1c08a74d34c1c34c84e13b68ee8 100644 (file)
@@ -1,9 +1,9 @@
-uniform mat4 mWorldViewProj;\r
-\r
-void main(void)\r
-{\r
-       gl_TexCoord[0] = gl_MultiTexCoord0;\r
-       gl_Position = mWorldViewProj * gl_Vertex;\r
-\r
-       gl_FrontColor = gl_BackColor = gl_Color;\r
-}\r
+uniform mat4 mWorldViewProj;
+
+void main(void)
+{
+       gl_TexCoord[0] = gl_MultiTexCoord0;
+       gl_Position = mWorldViewProj * gl_Vertex;
+
+       gl_FrontColor = gl_BackColor = gl_Color;
+}
index 91536ba1065edfaccd30e699e23d00b142442404..ff271d0e1ed7b0069140f8f333d6977553937134 100644 (file)
@@ -1,52 +1,52 @@
-uniform mat4 mWorldViewProj;\r
-uniform mat4 mInvWorld;\r
-uniform mat4 mTransWorld;\r
-uniform mat4 mWorld;\r
-\r
-uniform float dayNightRatio;\r
-uniform vec3 eyePosition;\r
-uniform float animationTimer;\r
-\r
-varying vec3 vPosition;\r
-varying vec3 worldPosition;\r
-\r
-varying vec3 eyeVec;\r
-varying vec3 lightVec;\r
-varying vec3 tsEyeVec;\r
-varying vec3 tsLightVec;\r
+uniform mat4 mWorldViewProj;
+uniform mat4 mInvWorld;
+uniform mat4 mTransWorld;
+uniform mat4 mWorld;
+
+uniform float dayNightRatio;
+uniform vec3 eyePosition;
+uniform float animationTimer;
+
+varying vec3 vPosition;
+varying vec3 worldPosition;
+
+varying vec3 eyeVec;
+varying vec3 lightVec;
+varying vec3 tsEyeVec;
+varying vec3 tsLightVec;
 varying float area_enable_parallax;
 varying float disp;
-\r
-const float e = 2.718281828459;\r
-const float BS = 10.0;\r
-\r
+
+const float e = 2.718281828459;
+const float BS = 10.0;
+
 
 float smoothCurve(float x)
 {
        return x * x * (3.0 - 2.0 * x);
-}\r
+}
 
 
 float triangleWave(float x)
 {
        return abs(fract(x + 0.5) * 2.0 - 1.0);
-}\r
+}
 
 
 float smoothTriangleWave(float x)
 {
        return smoothCurve(triangleWave(x)) * 2.0 - 1.0;
-}\r
-\r
-
-void main(void)\r
-{\r
-       gl_TexCoord[0] = gl_MultiTexCoord0;\r
-       //TODO: make offset depending on view angle and parallax uv displacement\r
-       //thats for textures that doesnt align vertically, like dirt with grass\r
+}
+
+
+void main(void)
+{
+       gl_TexCoord[0] = gl_MultiTexCoord0;
+       //TODO: make offset depending on view angle and parallax uv displacement
+       //thats for textures that doesnt align vertically, like dirt with grass
        //gl_TexCoord[0].y += 0.008;
-\r
-       //Allow parallax/relief mapping only for certain kind of nodes\r
+
+       //Allow parallax/relief mapping only for certain kind of nodes
        //Variable is also used to control area of the effect
 #if (DRAW_TYPE == NDT_NORMAL || DRAW_TYPE == NDT_LIQUID || DRAW_TYPE == NDT_FLOWINGLIQUID)
        area_enable_parallax = 1.0;
@@ -65,30 +65,30 @@ void main(void)
 
 
 #if (MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_LIQUID_OPAQUE) && ENABLE_WAVING_WATER
-       vec4 pos = gl_Vertex;\r
-       pos.y -= 2.0;\r
-       float posYbuf = (pos.z / WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH);\r
-       pos.y -= sin(posYbuf) * WATER_WAVE_HEIGHT + sin(posYbuf / 7.0) * WATER_WAVE_HEIGHT;\r
-       gl_Position = mWorldViewProj * pos;\r
-#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES\r
-       vec4 pos = gl_Vertex;\r
+       vec4 pos = gl_Vertex;
+       pos.y -= 2.0;
+       float posYbuf = (pos.z / WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH);
+       pos.y -= sin(posYbuf) * WATER_WAVE_HEIGHT + sin(posYbuf / 7.0) * WATER_WAVE_HEIGHT;
+       gl_Position = mWorldViewProj * pos;
+#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES
+       vec4 pos = gl_Vertex;
        pos.x += disp * 0.1;
        pos.y += disp * 0.1;
        pos.z += disp;
-       gl_Position = mWorldViewProj * pos;\r
-#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS\r
-       vec4 pos = gl_Vertex;\r
-       if (gl_TexCoord[0].y < 0.05) {\r
+       gl_Position = mWorldViewProj * pos;
+#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS
+       vec4 pos = gl_Vertex;
+       if (gl_TexCoord[0].y < 0.05) {
                pos.z += disp;
-       }\r
-       gl_Position = mWorldViewProj * pos;\r
-#else\r
-       gl_Position = mWorldViewProj * gl_Vertex;\r
-#endif\r
-\r
+       }
+       gl_Position = mWorldViewProj * pos;
+#else
+       gl_Position = mWorldViewProj * gl_Vertex;
+#endif
+
 
-       vPosition = gl_Position.xyz;\r
-       worldPosition = (mWorld * gl_Vertex).xyz;\r
+       vPosition = gl_Position.xyz;
+       worldPosition = (mWorld * gl_Vertex).xyz;
 
        // Don't generate heightmaps when too far from the eye
        float dist = distance (vec3(0.0, 0.0 ,0.0), vPosition);
@@ -96,16 +96,16 @@ void main(void)
                area_enable_parallax = 0.0;
        }
 
-       vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0);\r
-\r
-       vec3 normal, tangent, binormal;\r
-       normal = normalize(gl_NormalMatrix * gl_Normal);\r
+       vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0);
+
+       vec3 normal, tangent, binormal;
+       normal = normalize(gl_NormalMatrix * gl_Normal);
        tangent = normalize(gl_NormalMatrix * gl_MultiTexCoord1.xyz);
        binormal = normalize(gl_NormalMatrix * gl_MultiTexCoord2.xyz);
 
        vec3 v;
-\r
-       lightVec = sunPosition - worldPosition;\r
+
+       lightVec = sunPosition - worldPosition;
        v.x = dot(lightVec, tangent);
        v.y = dot(lightVec, binormal);
        v.z = dot(lightVec, normal);
@@ -116,32 +116,32 @@ void main(void)
        v.y = dot(eyeVec, binormal);
        v.z = dot(eyeVec, normal);
        tsEyeVec = normalize (v);
-\r
-       vec4 color;\r
-       float day = gl_Color.r;\r
-       float night = gl_Color.g;\r
-       float light_source = gl_Color.b;\r
-\r
-       float rg = mix(night, day, dayNightRatio);\r
-       rg += light_source * 2.5; // Make light sources brighter\r
-       float b = rg;\r
-\r
-       // Moonlight is blue\r
-       b += (day - night) / 13.0;\r
-       rg -= (day - night) / 23.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
-       gl_FrontColor = gl_BackColor = clamp(color,0.0,1.0);\r
-}\r
+
+       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);
+}
index 0f4609177d8604bbe33b9e2287ba15db5fe7cb52..d0b16c8b0274b1c08a74d34c1c34c84e13b68ee8 100644 (file)
@@ -1,9 +1,9 @@
-uniform mat4 mWorldViewProj;\r
-\r
-void main(void)\r
-{\r
-       gl_TexCoord[0] = gl_MultiTexCoord0;\r
-       gl_Position = mWorldViewProj * gl_Vertex;\r
-\r
-       gl_FrontColor = gl_BackColor = gl_Color;\r
-}\r
+uniform mat4 mWorldViewProj;
+
+void main(void)
+{
+       gl_TexCoord[0] = gl_MultiTexCoord0;
+       gl_Position = mWorldViewProj * gl_Vertex;
+
+       gl_FrontColor = gl_BackColor = gl_Color;
+}
index 7ae517d8ae7d50e932e8d3c1d3ee8240e01bf4ea..9b461f4c185e1c11609b142e3328b3cae83b4bb3 100644 (file)
-uniform mat4 mWorldViewProj;\r
-uniform mat4 mInvWorld;\r
-uniform mat4 mTransWorld;\r
-uniform mat4 mWorld;\r
-\r
-uniform float dayNightRatio;\r
-uniform vec3 eyePosition;\r
-uniform float animationTimer;\r
-\r
-varying vec3 vPosition;\r
-varying vec3 worldPosition;\r
-\r
-varying vec3 eyeVec;\r
-varying vec3 lightVec;\r
-varying vec3 tsEyeVec;\r
-varying vec3 tsLightVec;\r
-\r
-const float e = 2.718281828459;\r
-const float BS = 10.0;\r
-\r
+uniform mat4 mWorldViewProj;
+uniform mat4 mInvWorld;
+uniform mat4 mTransWorld;
+uniform mat4 mWorld;
+
+uniform float dayNightRatio;
+uniform vec3 eyePosition;
+uniform float animationTimer;
+
+varying vec3 vPosition;
+varying vec3 worldPosition;
+
+varying vec3 eyeVec;
+varying vec3 lightVec;
+varying vec3 tsEyeVec;
+varying vec3 tsLightVec;
+
+const float e = 2.718281828459;
+const float BS = 10.0;
+
 float smoothCurve(float x)
 {
        return x * x * (3.0 - 2.0 * x);
-}\r
+}
 float triangleWave(float x)
 {
        return abs(fract( x + 0.5 ) * 2.0 - 1.0);
-}\r
+}
 float smoothTriangleWave(float x)
 {
        return smoothCurve(triangleWave( x )) * 2.0 - 1.0;
-}\r
-\r
-void main(void)\r
-{\r
-       gl_TexCoord[0] = gl_MultiTexCoord0;\r
-
-#if (MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_LIQUID_OPAQUE) && ENABLE_WAVING_WATER\r
-       vec4 pos = gl_Vertex;\r
-       pos.y -= 2.0;\r
-\r
-       float posYbuf = (pos.z / WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH);\r
-\r
-       pos.y -= sin(posYbuf) * WATER_WAVE_HEIGHT + sin(posYbuf / 7.0) * WATER_WAVE_HEIGHT;\r
-       gl_Position = mWorldViewProj * pos;\r
-#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES\r
-       vec4 pos = gl_Vertex;\r
-       vec4 pos2 = mWorld * gl_Vertex;\r
-       /*\r
-        * Mathematic optimization: pos2.x * A + pos2.z * A (2 multiplications + 1 addition)\r
-        * replaced with: (pos2.x + pos2.z) * A (1 addition + 1 multiplication)\r
-        * And bufferize calcul to a float\r
-        */\r
-       float pos2XpZ = pos2.x + pos2.z;\r
-       pos.x += (smoothTriangleWave(animationTimer*10.0 + pos2XpZ * 0.01) * 2.0 - 1.0) * 0.4;\r
-       pos.y += (smoothTriangleWave(animationTimer*15.0 + pos2XpZ * -0.01) * 2.0 - 1.0) * 0.2;\r
-       pos.z += (smoothTriangleWave(animationTimer*10.0 + pos2XpZ * -0.01) * 2.0 - 1.0) * 0.4;\r
-       gl_Position = mWorldViewProj * pos;\r
-#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS\r
-       vec4 pos = gl_Vertex;\r
-       vec4 pos2 = mWorld * gl_Vertex;\r
-       if (gl_TexCoord[0].y < 0.05) {\r
-               /*\r
-                * Mathematic optimization: pos2.x * A + pos2.z * A (2 multiplications + 1 addition)\r
-                * replaced with: (pos2.x + pos2.z) * A (1 addition + 1 multiplication)\r
-                * And bufferize calcul to a float\r
-                */\r
-               float pos2XpZ = pos2.x + pos2.z;\r
-               pos.x += (smoothTriangleWave(animationTimer * 20.0 + pos2XpZ * 0.1) * 2.0 - 1.0) * 0.8;\r
-               pos.y -= (smoothTriangleWave(animationTimer * 10.0 + pos2XpZ * -0.5) * 2.0 - 1.0) * 0.4;\r
-       }\r
-       gl_Position = mWorldViewProj * pos;\r
-#else\r
-       gl_Position = mWorldViewProj * gl_Vertex;\r
-#endif\r
-\r
-       vPosition = gl_Position.xyz;\r
-       worldPosition = (mWorld * gl_Vertex).xyz;\r
-       vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0);\r
-\r
-       vec3 normal, tangent, binormal;\r
-       normal = normalize(gl_NormalMatrix * gl_Normal);\r
-       if (gl_Normal.x > 0.5) {\r
-               //  1.0,  0.0,  0.0\r
-               tangent  = normalize(gl_NormalMatrix * vec3( 0.0,  0.0, -1.0));\r
-               binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0,  0.0));\r
-       } else if (gl_Normal.x < -0.5) {\r
-               // -1.0,  0.0,  0.0\r
-               tangent  = normalize(gl_NormalMatrix * vec3( 0.0,  0.0,  1.0));\r
-               binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0,  0.0));\r
-       } else if (gl_Normal.y > 0.5) {\r
-               //  0.0,  1.0,  0.0\r
-               tangent  = normalize(gl_NormalMatrix * vec3( 1.0,  0.0,  0.0));\r
-               binormal = normalize(gl_NormalMatrix * vec3( 0.0,  0.0,  1.0));\r
-       } else if (gl_Normal.y < -0.5) {\r
-               //  0.0, -1.0,  0.0\r
-               tangent  = normalize(gl_NormalMatrix * vec3( 1.0,  0.0,  0.0));\r
-               binormal = normalize(gl_NormalMatrix * vec3( 0.0,  0.0,  1.0));\r
-       } else if (gl_Normal.z > 0.5) {\r
-               //  0.0,  0.0,  1.0\r
-               tangent  = normalize(gl_NormalMatrix * vec3( 1.0,  0.0,  0.0));\r
-               binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0,  0.0));\r
-       } else if (gl_Normal.z < -0.5) {\r
-               //  0.0,  0.0, -1.0\r
-               tangent  = normalize(gl_NormalMatrix * vec3(-1.0,  0.0,  0.0));\r
-               binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0,  0.0));\r
-       }\r
-       mat3 tbnMatrix = mat3(tangent.x, binormal.x, normal.x,\r
-                                                       tangent.y, binormal.y, normal.y,\r
-                                                       tangent.z, binormal.z, normal.z);\r
-\r
-       lightVec = sunPosition - worldPosition;\r
-       tsLightVec = lightVec * tbnMatrix;\r
-       eyeVec = (gl_ModelViewMatrix * gl_Vertex).xyz;\r
-       tsEyeVec = eyeVec * tbnMatrix;\r
-\r
-       vec4 color;\r
-       float day = gl_Color.r;\r
-       float night = gl_Color.g;\r
-       float light_source = gl_Color.b;\r
-\r
-       float rg = mix(night, day, dayNightRatio);\r
-       rg += light_source * 2.5; // Make light sources brighter\r
-       float b = rg;\r
-\r
-       // Moonlight is blue\r
-       b += (day - night) / 13.0;\r
-       rg -= (day - night) / 23.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
-       gl_FrontColor = gl_BackColor = clamp(color,0.0,1.0);\r
-}\r
+}
+
+void main(void)
+{
+       gl_TexCoord[0] = gl_MultiTexCoord0;
+
+#if (MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_LIQUID_OPAQUE) && ENABLE_WAVING_WATER
+       vec4 pos = gl_Vertex;
+       pos.y -= 2.0;
+
+       float posYbuf = (pos.z / WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH);
+
+       pos.y -= sin(posYbuf) * WATER_WAVE_HEIGHT + sin(posYbuf / 7.0) * WATER_WAVE_HEIGHT;
+       gl_Position = mWorldViewProj * pos;
+#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES
+       vec4 pos = gl_Vertex;
+       vec4 pos2 = mWorld * gl_Vertex;
+       /*
+        * Mathematic optimization: pos2.x * A + pos2.z * A (2 multiplications + 1 addition)
+        * replaced with: (pos2.x + pos2.z) * A (1 addition + 1 multiplication)
+        * And bufferize calcul to a float
+        */
+       float pos2XpZ = pos2.x + pos2.z;
+       pos.x += (smoothTriangleWave(animationTimer*10.0 + pos2XpZ * 0.01) * 2.0 - 1.0) * 0.4;
+       pos.y += (smoothTriangleWave(animationTimer*15.0 + pos2XpZ * -0.01) * 2.0 - 1.0) * 0.2;
+       pos.z += (smoothTriangleWave(animationTimer*10.0 + pos2XpZ * -0.01) * 2.0 - 1.0) * 0.4;
+       gl_Position = mWorldViewProj * pos;
+#elif MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS
+       vec4 pos = gl_Vertex;
+       vec4 pos2 = mWorld * gl_Vertex;
+       if (gl_TexCoord[0].y < 0.05) {
+               /*
+                * Mathematic optimization: pos2.x * A + pos2.z * A (2 multiplications + 1 addition)
+                * replaced with: (pos2.x + pos2.z) * A (1 addition + 1 multiplication)
+                * And bufferize calcul to a float
+                */
+               float pos2XpZ = pos2.x + pos2.z;
+               pos.x += (smoothTriangleWave(animationTimer * 20.0 + pos2XpZ * 0.1) * 2.0 - 1.0) * 0.8;
+               pos.y -= (smoothTriangleWave(animationTimer * 10.0 + pos2XpZ * -0.5) * 2.0 - 1.0) * 0.4;
+       }
+       gl_Position = mWorldViewProj * pos;
+#else
+       gl_Position = mWorldViewProj * gl_Vertex;
+#endif
+
+       vPosition = gl_Position.xyz;
+       worldPosition = (mWorld * gl_Vertex).xyz;
+       vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0);
+
+       vec3 normal, tangent, binormal;
+       normal = normalize(gl_NormalMatrix * gl_Normal);
+       if (gl_Normal.x > 0.5) {
+               //  1.0,  0.0,  0.0
+               tangent  = normalize(gl_NormalMatrix * vec3( 0.0,  0.0, -1.0));
+               binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0,  0.0));
+       } else if (gl_Normal.x < -0.5) {
+               // -1.0,  0.0,  0.0
+               tangent  = normalize(gl_NormalMatrix * vec3( 0.0,  0.0,  1.0));
+               binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0,  0.0));
+       } else if (gl_Normal.y > 0.5) {
+               //  0.0,  1.0,  0.0
+               tangent  = normalize(gl_NormalMatrix * vec3( 1.0,  0.0,  0.0));
+               binormal = normalize(gl_NormalMatrix * vec3( 0.0,  0.0,  1.0));
+       } else if (gl_Normal.y < -0.5) {
+               //  0.0, -1.0,  0.0
+               tangent  = normalize(gl_NormalMatrix * vec3( 1.0,  0.0,  0.0));
+               binormal = normalize(gl_NormalMatrix * vec3( 0.0,  0.0,  1.0));
+       } else if (gl_Normal.z > 0.5) {
+               //  0.0,  0.0,  1.0
+               tangent  = normalize(gl_NormalMatrix * vec3( 1.0,  0.0,  0.0));
+               binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0,  0.0));
+       } else if (gl_Normal.z < -0.5) {
+               //  0.0,  0.0, -1.0
+               tangent  = normalize(gl_NormalMatrix * vec3(-1.0,  0.0,  0.0));
+               binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0,  0.0));
+       }
+       mat3 tbnMatrix = mat3(tangent.x, binormal.x, normal.x,
+                                                       tangent.y, binormal.y, normal.y,
+                                                       tangent.z, binormal.z, normal.z);
+
+       lightVec = sunPosition - worldPosition;
+       tsLightVec = lightVec * tbnMatrix;
+       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);
+}
index a2ab9fa5f369d1790d3f60b301789a341166e950..c33b0a7d3ee3028622a925991db8d35d5d6367c9 100644 (file)
@@ -1,35 +1,35 @@
-uniform mat4 mWorldViewProj;\r
-uniform mat4 mInvWorld;\r
-uniform mat4 mTransWorld;\r
-uniform mat4 mWorld;\r
-\r
-uniform float dayNightRatio;\r
-uniform vec3 eyePosition;\r
-uniform float animationTimer;\r
-\r
-varying vec3 vPosition;\r
-varying vec3 worldPosition;\r
-\r
-varying vec3 eyeVec;\r
-varying vec3 lightVec;\r
-varying vec3 tsEyeVec;\r
-varying vec3 tsLightVec;\r
-\r
-const float e = 2.718281828459;\r
-const float BS = 10.0;\r
-\r
-void main(void)\r
-{\r
-       gl_TexCoord[0] = gl_MultiTexCoord0;\r
-       gl_Position = mWorldViewProj * gl_Vertex;\r
-\r
-       vPosition = gl_Position.xyz;\r
-       worldPosition = (mWorld * gl_Vertex).xyz;\r
-
-       vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0);\r
-\r
-       lightVec = sunPosition - worldPosition;\r
+uniform mat4 mWorldViewProj;
+uniform mat4 mInvWorld;
+uniform mat4 mTransWorld;
+uniform mat4 mWorld;
+
+uniform float dayNightRatio;
+uniform vec3 eyePosition;
+uniform float animationTimer;
+
+varying vec3 vPosition;
+varying vec3 worldPosition;
+
+varying vec3 eyeVec;
+varying vec3 lightVec;
+varying vec3 tsEyeVec;
+varying vec3 tsLightVec;
+
+const float e = 2.718281828459;
+const float BS = 10.0;
+
+void main(void)
+{
+       gl_TexCoord[0] = gl_MultiTexCoord0;
+       gl_Position = mWorldViewProj * gl_Vertex;
+
+       vPosition = gl_Position.xyz;
+       worldPosition = (mWorld * gl_Vertex).xyz;
+
+       vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0);
+
+       lightVec = sunPosition - worldPosition;
        eyeVec = -(gl_ModelViewMatrix * gl_Vertex).xyz;
-\r
-       gl_FrontColor = gl_BackColor = gl_Color;\r
-}\r
+
+       gl_FrontColor = gl_BackColor = gl_Color;
+}