#version 330 in vec2 fragTexCoord; uniform sampler2D texture0; uniform vec2 resolution; uniform float angle; out vec4 rotOut; void main() { vec2 uv_space = fragTexCoord - 0.5; uv_space.x *= resolution.x / resolution.y; float i = cos(-angle); float j = sin(-angle); vec2 rot = vec2((uv_space.x * i) - (uv_space.y * j), (uv_space.x * j) + (uv_space.y * i)); rot.x /= resolution.x / resolution.y; rot += 0.5; if (rot.x < 0.0 || rot.x > 1.0 || rot.y < 0.0 || rot.y > 1.0) { rotOut = vec4(0.0, 0.0, 0.0, 1.0); } else { rotOut = texture(texture0, rot); } }