OverviewFilesCommitsIssuesDocsReleasesPeers

ifsrenderer-linux / IFSEngine / Rendering / Shaders / postfx.frag.shader

48 lines · shader ref:
#version 430

#define PI			3.14159265358f
#define TWOPI		6.28318530718f
#define DEGTORAD	0.0174532925f

#define MAX_PALETTE_COLORS 150

layout(location = 0) out vec4 output_color;

uniform sampler2D input_tex;//previous pass result
uniform int width = 1920;
uniform int height = 1080;

uniform float postfx_real_params[64];
uniform vec3 postfx_vec3_params[64];

layout(std140, binding = 5) uniform palette_ubo
{
    vec4 palette[MAX_PALETTE_COLORS];
};

uniform int palette_colors_count = 2;

//Helper: sample palette with linear interpolation, pos in [0,1]
vec3 getPaletteColor(float pos)
{
    float palettepos = clamp(pos, 0.0, 1.0) * float(palette_colors_count - 1);
    int index = int(floor(palettepos));
    vec3 c1 = palette[index].xyz;
    if (index + 1 >= palette_colors_count)
        return c1;
    vec3 c2 = palette[index + 1].xyz;
    float a = fract(palettepos);
    return mix(c1, c2, a);
}

@includes

void main(void)
{
	vec2 uv = vec2(gl_FragCoord.x / float(width), gl_FragCoord.y / float(height));
    vec4 input_color = texture(input_tex, uv);

    @PostFxSnippet

}