mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-09 13:21:51 +09:00
59 lines
1.5 KiB
GLSL
59 lines
1.5 KiB
GLSL
varying vec4 v_color;
|
|
varying vec2 v_texCoords;
|
|
uniform sampler2D u_texture;
|
|
|
|
|
|
|
|
uniform mat4 Bayer;
|
|
uniform float monitorGamma;
|
|
|
|
vec4 gammaIn(vec4 col) {
|
|
return pow(col, vec4(vec3(monitorGamma), 1.0));
|
|
}
|
|
|
|
vec4 gammaOut(vec4 col) {
|
|
return pow(col, vec4(vec3(1.0 / monitorGamma), 1.0));
|
|
}
|
|
|
|
void main(void) {
|
|
// create texture coordinates based on pixelSize //
|
|
float pixelSize = 1.0;
|
|
|
|
vec2 pixelSizeVec = vec2(float(pixelSize), float(pixelSize));
|
|
|
|
vec2 discrete = (gl_FragCoord.xy + 0.001) / v_texCoords / pixelSizeVec;
|
|
//vec2 discrete = (gl_FragCoord.xy) / v_texCoords / pixelSizeVec;
|
|
|
|
discrete = floor(discrete * v_texCoords) / discrete;
|
|
|
|
vec4 color = texture2D(u_texture, discrete).rgba;
|
|
|
|
|
|
// add Bayer matrix entry to current pixel //
|
|
vec2 entry = mod(gl_FragCoord.xy / pixelSizeVec, vec2(4, 4));
|
|
|
|
color.r = color.r + Bayer[int(entry.x)][int(entry.y)] / 17.0 - 0.5;
|
|
color.g = color.g + Bayer[int(entry.x)][int(entry.y)] / 17.0 - 0.5;
|
|
color.b = color.b + Bayer[int(entry.x)][int(entry.y)] / 17.0 - 0.5;
|
|
//color.a = color.a + Bayer[int(entry.x)][int(entry.y)] / 17.0 - 0.5;
|
|
|
|
|
|
// find nearest 8-bit color //
|
|
color.r = floor(15.0 * color.r + 0.5) / 15.0;
|
|
color.g = floor(15.0 * color.g + 0.5) / 15.0;
|
|
color.b = floor(15.0 * color.b + 0.5) / 15.0;
|
|
//color.a = floor(15.0 * color.a + 0.5) / 15.0;
|
|
|
|
gl_FragColor = color;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//vec4 color = texture2D(u_texture, v_texCoords);
|
|
//color = floor(15.0 * color + 0.5) / 15.0;
|
|
//
|
|
//gl_FragColor = color;
|
|
} |