38 lines
882 B
GLSL
38 lines
882 B
GLSL
/*******************************************************************************************
|
|
*
|
|
* 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)
|
|
]
|