#version 330 // Input vertex attributes (from vertex shader) in vec2 fragTexCoord; in vec4 fragColor; // Input uniform values uniform sampler2D texture0; uniform vec4 colDiffuse; // Output fragment color out vec4 finalColor; // Viewport dimensions const float renderWidth = 1080; const float renderHeight = 720; // Pixel scaling uniform float pixelWidth = 2.0; uniform float pixelHeight = 2.0; void main() { float dx = pixelWidth * (1.0 / renderWidth); float dy = pixelHeight * (1.0 / renderHeight); vec2 coord = vec2(dx * floor(fragTexCoord.x / dx), dy * floor(fragTexCoord.y / dy)); vec3 tc = texture(texture0, coord).rgb; finalColor = vec4(tc, 1.0); }