Files
Terrarum/assets/4096.frg
Song Minjae 17c39c1824 Player movement seems like back to working, res→assets
Former-commit-id: f91181caee4dabf4cb2e51d8077441c6b0f83757
Former-commit-id: 8b450303698c5c85dea9145a056b290b95a6a7b0
2016-08-02 17:32:42 +09:00

37 lines
1.2 KiB
GLSL

varying vec2 texcoord;
uniform sampler2D renderTexture;
uniform mat4 Bayer;
uniform int pixelSize;
void main(void) {
// create texture coordinates based on pixelSize //
// vec2 discrete = (gl_FragCoord.xy + 0.001) / texcoord / pixelSize; //
vec2 pixelSizeVec = vec2(float(pixelSize), float(pixelSize));
vec2 discrete = (gl_FragCoord.xy + 0.001) / texcoord / pixelSizeVec;
discrete = floor(discrete * texcoord) / discrete;
vec3 color = texture2D(renderTexture, discrete).rgb;
// increase contrast (Bayer matrix operation reduces it) //
float contrast = 1.65;
color = mix(vec3(0.5), color, contrast);
// 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;
// find nearest 8-bit color //
color.r = floor(8.0 * color.r + 0.5) / 8.0;
color.g = floor(8.0 * color.g + 0.5) / 8.0;
color.b = floor(4.0 * color.b + 0.5) / 4.0;
gl_FragColor = vec4(color, 1.0);
}