From 451e872ddbe6db8bd8d6aa54ca0bf744dc5405e5 Mon Sep 17 00:00:00 2001 From: Patrick Schönberger Date: Wed, 3 Feb 2021 11:08:49 +0100 Subject: Screen Space SSS --- shaders/fbo_frag.glsl | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'shaders') 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); + } } -- cgit v1.2.3