REMOVED: the DrawModel function from classifierInterface (they all do exactly the...
[mldemos:baraks-mldemos.git] / MLDemos / shaders / drawSamplesShadow.fsh
1 #version 120\r
2 \r
3 uniform sampler2D color_texture;\r
4 uniform sampler2D shadow_texture;\r
5 uniform mat4 lightMvpMatrix;\r
6 uniform mat4 lightMvMatrix;\r
7 uniform float pointSize;\r
8 \r
9 const float Near = 1.0;\r
10 const float Far = 60.0;\r
11 const float Depth = 1.0 / (Far - Near);\r
12 const mat4 ScaleMatrix = mat4(0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.5, 0.5, 0.5, 1.0);\r
13 const float texSize = 512;\r
14 \r
15 //varying float asd;\r
16 varying float sampleR;\r
17 varying float sampleG;\r
18 varying float sampleB;\r
19 varying float stuff;\r
20 varying float lvX;\r
21 varying float lvY;\r
22 varying float lvZ;\r
23 varying float lvW;\r
24 \r
25 float unpack (vec4 colour)\r
26 {\r
27     const vec4 bitShifts = vec4(1.0,\r
28                     1.0 / 255.0,\r
29                     1.0 / (255.0 * 255.0),\r
30                     1.0 / (255.0 * 255.0 * 255.0));\r
31     return dot(colour, bitShifts);\r
32 }\r
33 \r
34 void main()\r
35 {\r
36     vec2 pos = gl_PointCoord-vec2(0.5,0.5);\r
37         float radius = dot(pos,pos);\r
38     if(radius > 0.21) discard;\r
39     vec4 lP = vec4(lvX, lvY, lvZ, lvW);\r
40     lP = lightMvpMatrix * lP;\r
41     lP = ScaleMatrix * lP;\r
42     lP += vec4(pos*(pointSize/texSize),0,0);\r
43     vec3 lPos = lP.xyz / lP.w;\r
44     vec4 color = texture2D(color_texture, gl_PointCoord)*vec4(sampleR, sampleG, sampleB, 1);\r
45     float z = lvZ / lvW;\r
46     vec4 texel = texture2D(shadow_texture, lPos.xy);\r
47     //float tZ = unpack(texel);\r
48     float tZ = texel.g;\r
49     if(lPos.z > tZ)\r
50     {\r
51         float c = 4.0;\r
52         float shadow = clamp(exp(-c * (lPos.z - tZ)) + 0.5, 0.0, 1.0);\r
53         gl_FragColor = color * shadow;\r
54         gl_FragColor.a = color.a;\r
55     }\r
56     else gl_FragColor = color;\r
57 \r
58     return;\r
59     float ss = stuff;\r
60 }\r