1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
const std::string buildShadowMapFragmentShader =
"#version 130 \n"
"uniform vec3 resolution;"
"uniform sampler2D stencilBuffer;"
"uniform sampler2D texture;"
"uniform float haveTexture;"
"uniform float set;"
"in mat4 projMat;"
"in vec4 texCoords;"
"void main() {"
" vec2 position = vec2 (gl_FragCoord.x / resolution.x, gl_FragCoord.y / resolution.y);"
" vec4 stencil = texture2D(stencilBuffer, position);"
" vec4 pixel = texture2D(texture, vec2(gl_TexCoord[0].x, texCoords.y - gl_TexCoord[0].y));"
" vec4 color = (haveTexture == 1) ? pixel * gl_Color : gl_Color;"
" float z = (gl_FragCoord.w != 1.f) ? (inverse(projMat) * vec4(0, 0, 0, gl_FragCoord.w)).w : gl_FragCoord.z;"
" if (stencil.r == 0 || set == 0) {"
" gl_FragColor = vec4(1, 0, 0, color.a);"
" } else if (set == 1 && z >= stencil.z && color.a >= stencil.a) {"
" gl_FragColor = vec4(1, 1, z, color.a);"
" } else {"
" gl_FragColor = stencil;"
" }"
"}"; |
Partager