diff options
| author | Patrick Schönberger | 2021-02-03 11:08:49 +0100 |
|---|---|---|
| committer | Patrick Schönberger | 2021-02-03 11:08:49 +0100 |
| commit | 451e872ddbe6db8bd8d6aa54ca0bf744dc5405e5 (patch) | |
| tree | cdaab02141e83558943a75f5b4ee00deb52ea478 /shaders | |
| parent | 9d10826ccb5d1f8a3821d4d2f4242c401146d12d (diff) | |
| download | subsurface_scattering-451e872ddbe6db8bd8d6aa54ca0bf744dc5405e5.tar.gz subsurface_scattering-451e872ddbe6db8bd8d6aa54ca0bf744dc5405e5.zip | |
Screen Space SSS
Diffstat (limited to 'shaders')
| -rw-r--r-- | shaders/fbo_frag.glsl | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/shaders/fbo_frag.glsl b/shaders/fbo_frag.glsl index cf1fafa..f6f12cd 100644 --- a/shaders/fbo_frag.glsl +++ b/shaders/fbo_frag.glsl @@ -4,10 +4,30 @@ out vec4 FragColor; in vec2 TexCoords;
uniform sampler2D screenTexture;
+uniform int applySSSSS;
+uniform int N;
void main()
-{
- FragColor = vec4(
- texture(screenTexture, TexCoords).rgb,
- 1.0);
+{
+ if (applySSSSS == 1) {
+ float x = 1.0/1600.0;
+ float y = 1.0/900.0;
+
+ float maxDist = N*N + N*N;
+
+ vec4 color = vec4(0, 0, 0, 1);
+ for (int i = -N; i <= N; i++) {
+ for (int j = -N; j <= N; j++) {
+ float dist = i*i + j*j;
+ vec4 newC = texture(screenTexture, TexCoords + vec2(i*x, j*y)) / (2*N*N);
+ float factor = 1 - (dist / maxDist);
+ factor = pow(factor, 2);
+ color += newC * factor;
+ }
+ }
+ FragColor = color;
+ }
+ else {
+ FragColor = texture(screenTexture, TexCoords);
+ }
}
|
