1
2/*
3** Copyright (c) 2012 The Khronos Group Inc.
4**
5** Permission is hereby granted, free of charge, to any person obtaining a
6** copy of this software and/or associated documentation files (the
7** "Materials"), to deal in the Materials without restriction, including
8** without limitation the rights to use, copy, modify, merge, publish,
9** distribute, sublicense, and/or sell copies of the Materials, and to
10** permit persons to whom the Materials are furnished to do so, subject to
11** the following conditions:
12**
13** The above copyright notice and this permission notice shall be included
14** in all copies or substantial portions of the Materials.
15**
16** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
23*/
24
25
26#ifdef GL_ES
27precision mediump float;
28#endif
29uniform float	mortarThickness;
30uniform vec3	brickColor;
31uniform vec3	mortarColor;
32
33uniform float	brickMortarWidth;
34uniform float	brickMortarHeight;
35uniform float	mwf;
36uniform float	mhf;
37
38varying vec3  Position;
39varying float lightIntensity;
40
41void main (void)
42{
43    vec3	ct;
44    float	ss, tt, w, h;
45
46    vec3 pos = Position;
47
48    ss = pos.x / brickMortarWidth;
49    tt = pos.z / brickMortarHeight;
50
51    if (fract (tt * 0.5) > 0.5)
52        ss += 0.5;
53
54    ss = fract (ss);
55    tt = fract (tt);
56
57    w = step (mwf, ss) - step (1.0 - mwf, ss);
58    h = step (mhf, tt) - step (1.0 - mhf, tt);
59
60    ct = clamp(mix (mortarColor, brickColor, w * h) * lightIntensity, 0.0, 1.0);
61
62    gl_FragColor = vec4 (ct, 1.0);
63}
64