#version 330 in vec3 localPos; out vec4 fragColor; uniform sampler2D equirectangularMap; const vec2 invAtan = vec2(0.1591, 0.3183); vec2 sampleSphericalMap(vec3 v) { vec2 uv = vec2(atan(v.z, v.x), asin(v.y)); uv *= invAtan; return uv + 0.5; } void main() { vec2 uv = sampleSphericalMap(normalize(localPos)); fragColor = vec4(texture(equirectangularMap, uv).rgb, 1.f); }