shader_type canvas_item;

// SUPER IMPORTANT, ELSE WE APPLY LIGHTNING TWICE!!
render_mode unshaded;

uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest;
uniform vec2 cam_pos;// move by a "sub_pixel" which is actually a full res pixel
uniform vec2 scaling;

void fragment() {
	// move by a "sub_pixel" which is actually a full res pixel
	vec2 sub_uv = SCREEN_UV + (cam_pos * SCREEN_PIXEL_SIZE);

	// number of downscaled pixles in UV coords
	vec2 pixels = SCREEN_PIXEL_SIZE * scaling;

	// round down and read in the center of the pixel
	vec2 pixel_uv = floor(sub_uv / pixels) + 0.5;

	COLOR = texture(screen_texture, pixel_uv * pixels) ;
}

