Files
combattest/shaders/ScreenShader.frag
T
2026-11-08 07:45:01 -05:00

42 lines
1.1 KiB
GLSL

#version 330 core
out vec4 FragColor;
in vec2 TexCoords;
uniform sampler2D screenTexture;
uniform sampler2D bloomTexture;
uniform float bloomStrength = 0.0f;
uniform float brightness = 0.0f;
uniform float colorContrast = 0.0f;
uniform float saturation = 1.0f;
uniform float exposure = 1.0f;
vec3 ACESFilm(vec3 x)
{
const float a = 2.51;
const float b = 0.03;
const float c = 2.43;
const float d = 0.59;
const float e = 0.14;
return clamp((x * (a * x + b)) / (x * (c * x + d) + e), 0.0, 1.0);
}
void main()
{
// Added before tonemapping, while everything is still in HDR
vec3 originalcolor = texture(screenTexture, TexCoords).rgb
+ texture(bloomTexture, TexCoords).rgb * bloomStrength;
vec3 finalcolor = ACESFilm(originalcolor * exposure);
const float gamma = 2.2;
finalcolor = pow(finalcolor, vec3(1.0 / gamma));
finalcolor = mix(finalcolor,vec3(1.0f) - finalcolor,colorContrast);
float average = (finalcolor[0]+finalcolor[1]+finalcolor[2])/3.0f;
finalcolor = mix(vec3(average), finalcolor, saturation);
FragColor = vec4(finalcolor,1.0f);
}