Files
PBR-Demo/assets/shaders/equirectangular_to_cubemap_fragment.glsl
T
2024-08-22 14:06:11 +02:00

31 lines
621 B
GLSL

#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;
// reinhard tone mapping
vec3 mapped = color / (color + vec3(1.0));
// gamma correction
//float gamma = 2.2;
//mapped = pow(mapped, vec3(1.0 / gamma));
color = mapped;
FragColor = vec4(color, 1.0);
}