stevenarella/src/render/shaders/trans_frag.glsl

29 lines
627 B
GLSL

uniform sampler2D taccum;
uniform sampler2D trevealage;
uniform sampler2DMS tcolor;
uniform int samples;
out vec4 fragColor;
void main() {
ivec2 C = ivec2(gl_FragCoord.xy);
vec4 accum = texelFetch(taccum, C, 0);
float aa = texelFetch(trevealage, C, 0).r;
vec4 col = texelFetch(tcolor, C, 0);
for (int i = 1; i < samples; i++) {
col += texelFetch(tcolor, C, i);
}
col /= float(samples);
float r = accum.a;
accum.a = aa;
if (r >= 1.0) {
fragColor = vec4(col.rgb, 0.0);
} else {
vec3 alp = clamp(accum.rgb / clamp(accum.a, 1e-4, 5e4), 0.0, 1.0);
fragColor = vec4(col.rgb * r + alp * (1.0 - r), 0.0);
}
}