/******************************************************************************************* * * rPBR [shader] - Equirectangular to cubemap fragment shader * * Copyright (c) 2017 Victor Fisac * **********************************************************************************************/ #version 330 # Input vertex attributes (from vertex shader) in vec3 fragPos # Input uniform values uniform sampler2D equirectangularMap # Output fragment color out vec4 finalColor vec2 SampleSphericalMap(vec3 v) [ vec2 uv = vec2(atan(v.z, v.x), asin(v.y)) uv *= vec2(0.1591, 0.3183) uv += 0.5 return uv ] void main() [ # Normalize local position vec2 uv = SampleSphericalMap(normalize(fragPos)) # Fetch color from texture map vec3 color = texture(equirectangularMap, uv).rgb # Calculate final fragment color finalColor = vec4(color, 1.0) ]