HDR skybox
This commit is contained in:
22
Shaders/HDRMap.fs
Normal file
22
Shaders/HDRMap.fs
Normal file
@ -0,0 +1,22 @@
|
||||
#version 460 core
|
||||
out vec4 FragColor;
|
||||
in vec3 localPos;
|
||||
|
||||
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(localPos);
|
||||
vec3 color = texture(equirectangularMap, uv).rgb;
|
||||
|
||||
FragColor = vec4(color,1.0);
|
||||
}
|
12
Shaders/HDRMap.vs
Normal file
12
Shaders/HDRMap.vs
Normal file
@ -0,0 +1,12 @@
|
||||
#version 460 core
|
||||
layout (location = 0) in vec3 aPos;
|
||||
|
||||
out vec3 localPos;
|
||||
|
||||
uniform mat4 projection;
|
||||
uniform mat4 view;
|
||||
|
||||
void main(){
|
||||
localPos = aPos;
|
||||
gl_Position = projection * view * vec4(localPos, 1.0);
|
||||
}
|
16
Shaders/HDRSkybox.fs
Normal file
16
Shaders/HDRSkybox.fs
Normal file
@ -0,0 +1,16 @@
|
||||
#version 460 core
|
||||
out vec4 FragColor;
|
||||
|
||||
in vec3 localPos;
|
||||
|
||||
uniform samplerCube environmentMap;
|
||||
|
||||
void main(){
|
||||
vec3 envColor = texture(environmentMap, localPos).rgb;
|
||||
|
||||
envColor = envColor /(envColor + vec3(1.0));
|
||||
envColor = pow(envColor, vec3(1.0/2.2));
|
||||
|
||||
FragColor = vec4(envColor,1.0);
|
||||
|
||||
}
|
16
Shaders/HDRSkybox.vs
Normal file
16
Shaders/HDRSkybox.vs
Normal file
@ -0,0 +1,16 @@
|
||||
#version 460 core
|
||||
layout (location = 0) in vec3 aPos;
|
||||
|
||||
uniform mat4 projection;
|
||||
uniform mat4 view;
|
||||
|
||||
out vec3 localPos;
|
||||
|
||||
void main(){
|
||||
localPos = aPos;
|
||||
|
||||
mat4 rotView = mat4(mat3(view));
|
||||
vec4 clipPos = projection * rotView * vec4(localPos,1.0);
|
||||
|
||||
gl_Position = clipPos.xyww;
|
||||
}
|
Reference in New Issue
Block a user