1234567891011121314151617181920212223242526272829303132333435363738 |
- #version 430
- layout (binding = 0) uniform sampler2D colorSamp;
- layout (binding = 1) uniform sampler2D ssaoSamp;
- layout (binding = 2) uniform sampler2D shadowSamp;
- uniform bool useSSAO;
- in vec2 varTex;
- out vec4 color;
- void main()
- {
- if(useSSAO)
- {
- color = vec4(texture(colorSamp, varTex).xyz * (texture(ssaoSamp, varTex).r + 0.5), 1.0);
- }
- else
- {
- color = vec4(texture(colorSamp, varTex).xyz, 1.0);
- }
- vec2 texelSize = 1.0 / vec2(textureSize(shadowSamp, 0));
- float result = 0.0;
- const int radius = 5;
- for(int x = -radius; x < radius; x++)
- {
- for(int y = -radius; y < radius; y++)
- {
- vec2 offset = vec2(float(x), float(y)) * texelSize;
- result += texture(shadowSamp, varTex + offset).r;
- }
- }
- result /= (radius * radius * 4);
- result = result * 0.5 + 0.5;
- color *= result;
- }
|