|
- [vert.glsl]
-
- #version 120
-
- attribute vec2 in_Position;
-
- varying vec4 pass_Position;
-
- void main(void)
- {
- pass_Position = vec4(0.5 * in_Position + 0.5, 0.0, 1.0);
- gl_Position = vec4(in_Position, 0.5, 1.0);
- }
-
- [frag.glsl]
-
- #version 120
-
- uniform sampler2D u_Texture;
-
- varying vec4 pass_Position;
-
- float rand(in vec2 p, in float v)
- {
- return fract(v * sin(dot(p, vec2(1298.9837, 7823.33145))));
- }
-
- void main(void)
- {
- vec2 t = pass_Position.xy;
- vec4 c0 = texture2D(u_Texture, t);
- float f = rand(pass_Position.xy, 12345.67);
-
- if (t.y > c0.x)
- {
- /* Sky */
- float val = min(t.y * 2.0, 1.0);
- if (f > 0.999)
- gl_FragColor = vec4(1.0);
- else
- gl_FragColor = vec4(0.4, t.y, val, 1.0);
- }
- else if (t.y > c0.x - 0.03)
- {
- /* Grass */
- if (f > 0.99)
- gl_FragColor = vec4(0.4, 0.7, 0.3, 1.0);
- else if (f > 0.9)
- gl_FragColor = vec4(0.3, 0.6, 0.2, 1.0);
- else
- gl_FragColor = vec4(0.2, 0.5, 0.1, 1.0);
- }
- else
- {
- /* Earth */
- if (f > 0.99)
- gl_FragColor = vec4(0.7, 0.4, 0.3, 1.0);
- else if (f > 0.9)
- gl_FragColor = vec4(0.6, 0.3, 0.2, 1.0);
- else
- gl_FragColor = vec4(0.5, 0.2, 0.1, 1.0);
- }
- }
|