diff options
author | RealBadAngel <maciej.kasatkin@yahoo.com> | 2014-03-21 01:32:00 +0100 |
---|---|---|
committer | RealBadAngel <maciej.kasatkin@yahoo.com> | 2014-03-21 01:32:00 +0100 |
commit | 0dc1aec50940140e28f434c524296e284e73d623 (patch) | |
tree | b69e282c3b59db2f300e4d017afe67d4ad246a8c /client/shaders/plants_shader/opengl_vertex.glsl | |
parent | f3d83a4516eb9c6658a7c3e07bf1b7d4f4996bef (diff) | |
download | minetest-0dc1aec50940140e28f434c524296e284e73d623.tar.gz minetest-0dc1aec50940140e28f434c524296e284e73d623.tar.bz2 minetest-0dc1aec50940140e28f434c524296e284e73d623.zip |
Normal maps generation on the fly.
Parallax mapping with slope information.
Overriding normal maps.
Diffstat (limited to 'client/shaders/plants_shader/opengl_vertex.glsl')
-rw-r--r-- | client/shaders/plants_shader/opengl_vertex.glsl | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/client/shaders/plants_shader/opengl_vertex.glsl b/client/shaders/plants_shader/opengl_vertex.glsl index 7987fc16d..a95c20242 100644 --- a/client/shaders/plants_shader/opengl_vertex.glsl +++ b/client/shaders/plants_shader/opengl_vertex.glsl @@ -1,13 +1,20 @@ uniform mat4 mWorldViewProj;
uniform mat4 mInvWorld;
uniform mat4 mTransWorld;
+uniform mat4 mWorld;
+
uniform float dayNightRatio;
uniform float animationTimer;
uniform vec3 eyePosition;
varying vec3 vPosition;
+varying vec3 worldPosition;
+
varying vec3 eyeVec;
+varying vec3 lightVec;
+
+const float BS = 10.0;
#ifdef ENABLE_WAVING_PLANTS
float smoothCurve( float x ) {
@@ -23,12 +30,11 @@ float smoothTriangleWave( float x ) { void main(void)
{
-
gl_TexCoord[0] = gl_MultiTexCoord0;
#ifdef ENABLE_WAVING_PLANTS
vec4 pos = gl_Vertex;
- vec4 pos2 = mTransWorld * gl_Vertex;
+ vec4 pos2 = mWorld * gl_Vertex;
if (gl_TexCoord[0].y < 0.05) {
pos.x += (smoothTriangleWave(animationTimer * 20.0 + pos2.x * 0.1 + pos2.z * 0.1) * 2.0 - 1.0) * 0.8;
pos.y -= (smoothTriangleWave(animationTimer * 10.0 + pos2.x * -0.5 + pos2.z * -0.5) * 2.0 - 1.0) * 0.4;
@@ -38,9 +44,13 @@ void main(void) gl_Position = mWorldViewProj * gl_Vertex;
#endif
- vPosition = (mWorldViewProj * gl_Vertex).xyz;
- eyeVec = (gl_ModelViewMatrix * gl_Vertex).xyz;
+ 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;
+
vec4 color;
//color = vec4(1.0, 1.0, 1.0, 1.0);
@@ -76,11 +86,8 @@ void main(void) color = color * color; // SRGB -> Linear
if(gl_Normal.y <= 0.5)
color *= 0.6;
- //color *= 0.7;
color = sqrt(color); // Linear -> SRGB
-
color.a = gl_Color.a;
gl_FrontColor = gl_BackColor = color;
-
}
|