diff options
Diffstat (limited to 'Assets/Shaders/EquirectToCubemap.glsl')
| -rw-r--r-- | Assets/Shaders/EquirectToCubemap.glsl | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Assets/Shaders/EquirectToCubemap.glsl b/Assets/Shaders/EquirectToCubemap.glsl new file mode 100644 index 0000000..2b99c9b --- /dev/null +++ b/Assets/Shaders/EquirectToCubemap.glsl @@ -0,0 +1,33 @@ +#type vertex + +#version 330 core +layout (location = 0) in vec3 aPos; +out vec3 WorldPos; +uniform mat4 projection; +uniform mat4 view; +void main() +{ + WorldPos = aPos; + gl_Position = projection * view * vec4(WorldPos, 1.0); +} + +#type fragment + +#version 330 core +out vec4 FragColor; +in vec3 WorldPos; +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; + uv += 0.5; + return uv; +} +void main() +{ + vec2 uv = SampleSphericalMap(normalize(WorldPos)); + vec3 color = texture(equirectangularMap, uv).rgb; + FragColor = vec4(color, 1.0); +} |
