1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#version 120
uniform sampler2D u_dither_texture;
uniform sampler2D u_terrain_texture;
uniform vec2 u_texture_dimensions;
varying float var_brightness;
varying vec2 var_dither_texture_position;
varying vec2 var_texture_position;
varying vec2 var_texture_offset;
// TODO(sirver): This is a hack to make sure we are sampling inside of the
// terrain texture. This is a common problem with OpenGL and texture atlases.
#define MARGIN 1e-2
void main() {
vec2 texture_fract = clamp(
fract(var_texture_position),
vec2(MARGIN, MARGIN),
vec2(1. - MARGIN, 1. - MARGIN));
vec4 clr = texture2D(u_terrain_texture, var_texture_offset + u_texture_dimensions * texture_fract);
gl_FragColor = vec4(clr.rgb * var_brightness,
1. - texture2D(u_dither_texture, var_dither_texture_position).a);
}
|