2 uniform mat4 mWorldViewProj;
\r
3 uniform mat4 mInvWorld;
\r
4 uniform mat4 mTransWorld;
\r
5 uniform float dayNightRatio;
\r
7 varying vec3 vPosition;
\r
8 varying vec3 viewVec;
\r
12 gl_Position = mWorldViewProj * gl_Vertex;
\r
14 vPosition = (mWorldViewProj * gl_Vertex).xyz;
\r
19 vec3 c1 = cross( gl_Normal, vec3(0.0, 0.0, 1.0) );
\r
20 vec3 c2 = cross( gl_Normal, vec3(0.0, 1.0, 0.0) );
\r
22 if( length(c1)>length(c2) )
\r
31 tangent = normalize(tangent);
\r
33 //binormal = cross(gl_Normal, tangent);
\r
34 //binormal = normalize(binormal);
\r
37 //color = vec4(1.0, 1.0, 1.0, 1.0);
\r
39 float day = gl_Color.r;
\r
40 float night = gl_Color.g;
\r
41 float light_source = gl_Color.b;
\r
43 /*color.r = mix(night, day, dayNightRatio);
\r
45 color.b = color.r;*/
\r
47 float rg = mix(night, day, dayNightRatio);
\r
48 rg += light_source * 1.5; // Make light sources brighter
\r
51 // Moonlight is blue
\r
52 b += (day - night) / 13.0;
\r
53 rg -= (day - night) / 13.0;
\r
55 // Emphase blue a bit in darker places
\r
56 // See C++ implementation in mapblock_mesh.cpp finalColorBlend()
\r
57 b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025);
\r
59 // Artificial light is yellow-ish
\r
60 // See C++ implementation in mapblock_mesh.cpp finalColorBlend()
\r
61 rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065);
\r
67 // Make sides and bottom darker than the top
\r
68 color = color * color; // SRGB -> Linear
\r
69 if(gl_Normal.y <= 0.5)
\r
72 color = sqrt(color); // Linear -> SRGB
\r
74 color.a = gl_Color.a;
\r
76 gl_FrontColor = gl_BackColor = color;
\r
78 gl_TexCoord[0] = gl_MultiTexCoord0;
\r
80 vec3 n1 = normalize(gl_NormalMatrix * gl_Normal);
\r
81 vec4 tangent1 = vec4(tangent.x, tangent.y, tangent.z, 0);
\r
82 //vec3 t1 = normalize(gl_NormalMatrix * tangent1);
\r
83 //vec3 b1 = cross(n1, t1);
\r
86 vec3 vVertex = vec3(gl_ModelViewMatrix * gl_Vertex);
\r
87 vec3 vVec = -vVertex;
\r
88 //v.x = dot(vVec, t1);
\r
89 //v.y = dot(vVec, b1);
\r
90 //v.z = dot(vVec, n1);
\r
92 viewVec = normalize(vec3(0.0, -0.4, 0.5));
\r
93 //Vector representing the 0th texture coordinate passed to fragment shader
\r
94 //gl_TexCoord[0] = vec2(gl_MultiTexCoord0);
\r
96 // Transform the current vertex
\r
97 //gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
\r