]> gitweb.ps.run Git - subsurface_scattering/blob - shaders/fbo_frag.glsl
Screen Space SSS
[subsurface_scattering] / shaders / fbo_frag.glsl
1 #version 330 core\r
2 out vec4 FragColor;\r
3   \r
4 in vec2 TexCoords;\r
5 \r
6 uniform sampler2D screenTexture;\r
7 uniform int applySSSSS;\r
8 uniform int N;\r
9 \r
10 void main()\r
11 {\r
12     if (applySSSSS == 1) {\r
13         float x = 1.0/1600.0;\r
14         float y = 1.0/900.0;\r
15 \r
16         float maxDist = N*N + N*N;\r
17 \r
18         vec4 color = vec4(0, 0, 0, 1);\r
19         for (int i = -N; i <= N; i++) {\r
20             for (int j = -N; j <= N; j++) {\r
21                 float dist = i*i + j*j;\r
22                 vec4 newC = texture(screenTexture, TexCoords + vec2(i*x, j*y)) / (2*N*N);\r
23                 float factor = 1 - (dist / maxDist);\r
24                 factor = pow(factor, 2);\r
25                 color += newC * factor;\r
26             }\r
27         }\r
28         FragColor = color;\r
29     }\r
30     else {\r
31         FragColor = texture(screenTexture, TexCoords);\r
32     }\r
33 }\r