31 lines
621 B
GLSL
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);
|
|
} |