]> git.lizzy.rs Git - dragonfireclient.git/blob - client/shaders/liquids_shader/opengl_vertex.glsl
e8f1858255b6f833e6ac12e762b1cc183ae37ad6
[dragonfireclient.git] / client / shaders / liquids_shader / opengl_vertex.glsl
1 uniform mat4 mWorldViewProj;\r
2 uniform mat4 mInvWorld;\r
3 uniform mat4 mTransWorld;\r
4 uniform float dayNightRatio;\r
5 uniform float animationTimer;\r
6 \r
7 uniform vec3 eyePosition;\r
8 \r
9 varying vec3 vPosition;\r
10 varying vec3 eyeVec;\r
11 \r
12 void main(void)\r
13 {\r
14 #ifdef ENABLE_WAVING_WATER\r
15         vec4 pos2 = gl_Vertex;\r
16         pos2.y -= 2.0;\r
17         pos2.y -= sin (pos2.z/WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH) * WATER_WAVE_HEIGHT\r
18                 + sin ((pos2.z/WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH) / 7.0) * WATER_WAVE_HEIGHT;\r
19         gl_Position = mWorldViewProj * pos2;\r
20 #else\r
21         gl_Position = mWorldViewProj * gl_Vertex;\r
22 #endif\r
23 \r
24         eyeVec = (gl_ModelViewMatrix * gl_Vertex).xyz;\r
25         vPosition = (mWorldViewProj * gl_Vertex).xyz;\r
26 \r
27         vec4 color;\r
28         //color = vec4(1.0, 1.0, 1.0, 1.0);\r
29 \r
30         float day = gl_Color.r;\r
31         float night = gl_Color.g;\r
32         float light_source = gl_Color.b;\r
33 \r
34         /*color.r = mix(night, day, dayNightRatio);\r
35         color.g = color.r;\r
36         color.b = color.r;*/\r
37 \r
38         float rg = mix(night, day, dayNightRatio);\r
39         rg += light_source * 2.5; // Make light sources brighter\r
40         float b = rg;\r
41 \r
42         // Moonlight is blue\r
43         b += (day - night) / 13.0;\r
44         rg -= (day - night) / 13.0;\r
45 \r
46         // Emphase blue a bit in darker places\r
47         // See C++ implementation in mapblock_mesh.cpp finalColorBlend()\r
48         b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025);\r
49 \r
50         // Artificial light is yellow-ish\r
51         // See C++ implementation in mapblock_mesh.cpp finalColorBlend()\r
52         rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065);\r
53 \r
54         color.r = clamp(rg,0.0,1.0);\r
55         color.g = clamp(rg,0.0,1.0);\r
56         color.b = clamp(b,0.0,1.0);\r
57         color.a = gl_Color.a;\r
58 \r
59         gl_FrontColor = gl_BackColor = color;\r
60 \r
61         gl_TexCoord[0] = gl_MultiTexCoord0;\r
62 \r
63 }\r