Add Skybox Example (#5)

* added skybox example

* use existing resource directory
This commit is contained in:
Pebaz 2019-09-30 06:51:49 -04:00 committed by Richard Smith
parent 779fd39135
commit 95b31c40de
5 changed files with 131 additions and 64 deletions

View file

@ -8,31 +8,31 @@
#version 330
# Input vertex attributes (from vertex shader)
in vec3 fragPos
// Input vertex attributes (from vertex shader)
in vec3 fragPosition;
# Input uniform values
uniform sampler2D equirectangularMap
// Input uniform values
uniform sampler2D equirectangularMap;
# Output fragment color
out vec4 finalColor
// 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
]
{
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))
{
// Normalize local position
vec2 uv = SampleSphericalMap(normalize(fragPosition));
# Fetch color from texture map
vec3 color = texture(equirectangularMap, uv).rgb
// Fetch color from texture map
vec3 color = texture(equirectangularMap, uv).rgb;
# Calculate final fragment color
finalColor = vec4(color, 1.0)
]
// Calculate final fragment color
finalColor = vec4(color, 1.0);
}

View file

@ -8,21 +8,21 @@
#version 330
# Input vertex attributes
in vec3 vertexPosition
// Input vertex attributes
in vec3 vertexPosition;
# Input uniform values
uniform mat4 projection
uniform mat4 view
// Input uniform values
uniform mat4 projection;
uniform mat4 view;
# Output vertex attributes (to fragment shader)
out vec3 fragPos
// Output vertex attributes (to fragment shader)
out vec3 fragPosition;
void main()
[
# Calculate fragment position based on model transformations
fragPos = vertexPosition
{
// Calculate fragment position based on model transformations
fragPosition = vertexPosition;
# Calculate final vertex position
gl_Position = projection*view*vec4(vertexPosition, 1.0)
]
// Calculate final vertex position
gl_Position = projection*view*vec4(vertexPosition, 1.0);
}

View file

@ -8,24 +8,24 @@
#version 330
# Input vertex attributes (from vertex shader)
in vec3 fragPos
// Input vertex attributes (from vertex shader)
in vec3 fragPosition;
# Input uniform values
uniform samplerCube environmentMap
// Input uniform values
uniform samplerCube environmentMap;
# Output fragment color
out vec4 finalColor
// Output fragment color
out vec4 finalColor;
void main()
[
# Fetch color from texture map
vec3 color = texture(environmentMap, fragPos).rgb
{
// Fetch color from texture map
vec3 color = texture(environmentMap, fragPosition).rgb;
# Apply gamma correction
color = color/(color + vec3(1.0))
color = pow(color, vec3(1.0/2.2))
// Apply gamma correction
color = color/(color + vec3(1.0));
color = pow(color, vec3(1.0/2.2));
# Calculate final fragment color
finalColor = vec4(color, 1.0)
]
// Calculate final fragment color
finalColor = vec4(color, 1.0);
}

View file

@ -8,25 +8,25 @@
#version 330
# Input vertex attributes
in vec3 vertexPosition
// Input vertex attributes
in vec3 vertexPosition;
# Input uniform values
uniform mat4 projection
uniform mat4 view
// Input uniform values
uniform mat4 projection;
uniform mat4 view;
# Output vertex attributes (to fragment shader)
out vec3 fragPos
// Output vertex attributes (to fragment shader)
out vec3 fragPosition;
void main()
[
# Calculate fragment position based on model transformations
fragPos = vertexPosition
{
// Calculate fragment position based on model transformations
fragPosition = vertexPosition;
# Remove translation from the view matrix
mat4 rotView = mat4(mat3(view))
vec4 clipPos = projection*rotView*vec4(vertexPosition, 1.0)
// Remove translation from the view matrix
mat4 rotView = mat4(mat3(view));
vec4 clipPos = projection*rotView*vec4(vertexPosition, 1.0);
# Calculate final vertex position
gl_Position = clipPos.xyww
]
// Calculate final vertex position
gl_Position = clipPos.xyzw;
}