33 lines
924 B
Plaintext
33 lines
924 B
Plaintext
|
// Exclusive to SSR for now
|
||
|
#version 450
|
||
|
|
||
|
#include "compiled.inc"
|
||
|
#include "std/gbuffer.glsl"
|
||
|
|
||
|
uniform sampler2D tex;
|
||
|
uniform sampler2D gbuffer0; // Roughness
|
||
|
|
||
|
uniform vec2 dirInv;
|
||
|
|
||
|
in vec2 texCoord;
|
||
|
out vec4 fragColor;
|
||
|
|
||
|
void main() {
|
||
|
float roughness = textureLod(gbuffer0, texCoord, 0.0).b;
|
||
|
// if (roughness == 0.0) { // Always blur for now, non blured output can produce noise
|
||
|
// fragColor.rgb = textureLod(tex, texCoord).rgb;
|
||
|
// return;
|
||
|
// }
|
||
|
if (roughness >= 0.8) { // No reflections
|
||
|
fragColor.rgb = textureLod(tex, texCoord, 0.0).rgb;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
fragColor.rgb = textureLod(tex, texCoord + dirInv * 2.5, 0.0).rgb;
|
||
|
fragColor.rgb += textureLod(tex, texCoord + dirInv * 1.5, 0.0).rgb;
|
||
|
fragColor.rgb += textureLod(tex, texCoord, 0.0).rgb;
|
||
|
fragColor.rgb += textureLod(tex, texCoord - dirInv * 1.5, 0.0).rgb;
|
||
|
fragColor.rgb += textureLod(tex, texCoord - dirInv * 2.5, 0.0).rgb;
|
||
|
fragColor.rgb /= vec3(5.0);
|
||
|
}
|