\r
in vec2 TexCoords;\r
\r
-uniform sampler2D screenTexture;\r
+uniform sampler2D shadowmapTexture;\r
+uniform sampler2D irradianceTexture;\r
+uniform int screenWidth;\r
+uniform int screenHeight;\r
+uniform int renderState;\r
+uniform vec2 samplePositions[13];\r
+uniform vec3 sampleWeights[13];\r
\r
void main()\r
-{ \r
- FragColor = vec4(\r
- texture(screenTexture, TexCoords).rgb,\r
- 1.0);\r
+{\r
+ if (renderState == 0) {\r
+ FragColor = texture(shadowmapTexture, TexCoords);\r
+ }\r
+ else if (renderState == 1) {\r
+ FragColor = texture(irradianceTexture, TexCoords);\r
+ }\r
+ else if (renderState == 2) {\r
+ // sample calculated irradiance\r
+ // using Gaussian kernel to approximate light spread\r
+ vec4 result = vec4(0, 0, 0, 1);\r
+ for (int i = 0; i < 13; i++) {\r
+ vec2 sampleCoords = TexCoords + samplePositions[i] * vec2(1.0/screenWidth, 1.0/screenHeight);\r
+ //vec4 sample = texture(irradianceTexture, sampleCoords)\r
+ // * texture(shadowmapTexture, sampleCoords);\r
+ vec4 sample = texture(irradianceTexture, sampleCoords);\r
+ vec4 weight = vec4(sampleWeights[i], 1);\r
+ result += sample * weight;\r
+ }\r
+ FragColor = result;\r
+ }\r
}\r