diff options
| author | hachem <im@hachem.wtf> | 2025-08-22 12:24:05 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2025-08-22 12:24:05 +0200 |
| commit | 0d819f2b9a71e862bce8799c6b0c1304e62219b3 (patch) | |
| tree | a3011c8f5b04c98de5a8a24bc2b4ded312de958e /Assets/Shaders/EquirectToCubemap.glsl | |
| parent | c20a400e620154f0c334fe0a37d547625b6ee65b (diff) | |
[add]: add HDRI
Diffstat (limited to 'Assets/Shaders/EquirectToCubemap.glsl')
| -rw-r--r-- | Assets/Shaders/EquirectToCubemap.glsl | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Assets/Shaders/EquirectToCubemap.glsl b/Assets/Shaders/EquirectToCubemap.glsl new file mode 100644 index 0000000..2b99c9b --- /dev/null +++ b/Assets/Shaders/EquirectToCubemap.glsl @@ -0,0 +1,33 @@ +#type vertex + +#version 330 core +layout (location = 0) in vec3 aPos; +out vec3 WorldPos; +uniform mat4 projection; +uniform mat4 view; +void main() +{ + WorldPos = aPos; + gl_Position = projection * view * vec4(WorldPos, 1.0); +} + +#type fragment + +#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; + FragColor = vec4(color, 1.0); +} |
