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