yupplemayham/Resources/shaders/GL_postprocess.frag

67 lines
No EOL
1.9 KiB
GLSL

#version 330 core
layout (std140) uniform uPostProcess {
int curTime;
int dt;
vec3 colorMod;
float blurIntensity;
float blurDuration;
float shakeIntensity;
float shakeDuration;
int effects;
vec3 colorMod_hud;
float blurIntensity_hud;
float blurDuration_hud;
float shakeIntensity_hud;
float shakeDuration_hud;
int effects_hud;
};
out vec4 FragColor;
in vec2 texCoord;
uniform int edge_kernel[9];
uniform float blur_kernel[9];
const float offset = 1.0 / 300.0;
uniform sampler2D screenTexture;
uniform bool worldOrHud;
void main()
{
if (worldOrHud == false)
{
if ((effects & 1) != 0) // BLUR
{
vec4 result = vec4(0.0);
vec2 offsets[9] = vec2[](
vec2(-offset, offset), // top-left
vec2( 0.0f, offset), // top-center
vec2( offset, offset), // top-right
vec2(-offset, 0.0f), // center-left
vec2( 0.0f, 0.0f), // center-center
vec2( offset, 0.0f), // center-right
vec2(-offset, -offset), // bottom-left
vec2( 0.0f, -offset), // bottom-center
vec2( offset, -offset) // bottom-right
);
vec4 sampleTex[9];
for (int i = 0; i < 9; i++)
{
sampleTex[i] = vec4(texture(screenTexture, texCoord.st + offsets[i]));
}
for (int i = 0; i < 9; i++)
result += sampleTex[i] * blur_kernel[i];
//FragColor = mix(texture(screenTexture, texCoord), vec4(1.0, 0.8, 0.0, 1.0), 0.3 - (1.0 / shakeTime) * shakeIntensity);
//FragColor = vec4(1.0 / blurDuration, 1.0, 0.0, 1.0);
FragColor = vec4(result);
}
else
{
//FragColor = vec4(1.0, 0.0, 1.0 / blurDuration, 1.0);
FragColor = texture(screenTexture, texCoord);
}
}
}