Skip to content

Commit

Permalink
Merge pull request #358 from agnat/fix/8.2.csm
Browse files Browse the repository at this point in the history
2.3.csm: fix mac os issues
  • Loading branch information
JoeyDeVries authored May 18, 2023
2 parents 7291ee8 + a43c504 commit ae3d985
Show file tree
Hide file tree
Showing 10 changed files with 37 additions and 28 deletions.
4 changes: 2 additions & 2 deletions src/8.guest/2021/2.csm/10.debug_cascade.fs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#version 460 core
#version 410 core
out vec4 FragColor;

uniform vec4 color;

void main()
{
FragColor = color;
}
}
4 changes: 2 additions & 2 deletions src/8.guest/2021/2.csm/10.debug_cascade.vs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#version 460 core
#version 410 core
layout (location = 0) in vec3 aPos;

uniform mat4 view;
Expand All @@ -7,4 +7,4 @@ uniform mat4 projection;
void main()
{
gl_Position = projection * view * vec4(aPos, 1.0);
}
}
4 changes: 2 additions & 2 deletions src/8.guest/2021/2.csm/10.debug_quad.vs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#version 460 core
#version 410 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec2 aTexCoords;

Expand All @@ -8,4 +8,4 @@ void main()
{
TexCoords = aTexCoords;
gl_Position = vec4(aPos, 1.0);
}
}
4 changes: 2 additions & 2 deletions src/8.guest/2021/2.csm/10.debug_quad_depth.fs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#version 460 core
#version 410 core
out vec4 FragColor;

in vec2 TexCoords;
Expand All @@ -20,4 +20,4 @@ void main()
float depthValue = texture(depthMap, vec3(TexCoords, layer)).r;
// FragColor = vec4(vec3(LinearizeDepth(depthValue) / far_plane), 1.0); // perspective
FragColor = vec4(vec3(depthValue), 1.0); // orthographic
}
}
6 changes: 3 additions & 3 deletions src/8.guest/2021/2.csm/10.shadow_mapping.fs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#version 460 core
#version 410 core
out vec4 FragColor;

in VS_OUT {
Expand All @@ -16,7 +16,7 @@ uniform float farPlane;

uniform mat4 view;

layout (std140, binding = 0) uniform LightSpaceMatrices
layout (std140) uniform LightSpaceMatrices
{
mat4 lightSpaceMatrices[16];
};
Expand Down Expand Up @@ -108,4 +108,4 @@ void main()
vec3 lighting = (ambient + (1.0 - shadow) * (diffuse + specular)) * color;

FragColor = vec4(lighting, 1.0);
}
}
4 changes: 2 additions & 2 deletions src/8.guest/2021/2.csm/10.shadow_mapping.vs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#version 460 core
#version 410 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aNormal;
layout (location = 2) in vec2 aTexCoords;
Expand All @@ -21,4 +21,4 @@ void main()
vs_out.Normal = transpose(inverse(mat3(model))) * aNormal;
vs_out.TexCoords = aTexCoords;
gl_Position = projection * view * model * vec4(aPos, 1.0);
}
}
4 changes: 2 additions & 2 deletions src/8.guest/2021/2.csm/10.shadow_mapping_depth.fs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#version 460 core
#version 410 core

void main()
{
}
}
9 changes: 6 additions & 3 deletions src/8.guest/2021/2.csm/10.shadow_mapping_depth.gs
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
#version 460 core
#version 410 core

layout(triangles, invocations = 5) in;
layout(triangle_strip, max_vertices = 3) out;

layout (std140, binding = 0) uniform LightSpaceMatrices
layout (std140) uniform LightSpaceMatrices
{
mat4 lightSpaceMatrices[16];
};
/*
uniform mat4 lightSpaceMatrices[16];
*/

void main()
{
Expand All @@ -17,4 +20,4 @@ void main()
EmitVertex();
}
EndPrimitive();
}
}
4 changes: 2 additions & 2 deletions src/8.guest/2021/2.csm/10.shadow_mapping_depth.vs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#version 460 core
#version 410 core
layout (location = 0) in vec3 aPos;

uniform mat4 model;

void main()
{
gl_Position = model * vec4(aPos, 1.0);
}
}
22 changes: 14 additions & 8 deletions src/8.guest/2021/2.csm/shadow_mapping.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ void drawCascadeVolumeVisualizers(const std::vector<glm::mat4>& lightMatrices, S
const unsigned int SCR_WIDTH = 2560;
const unsigned int SCR_HEIGHT = 1440;

// framebuffer size
int fb_width;
int fb_height;

// camera
Camera camera(glm::vec3(0.0f, 0.0f, 3.0f));
float lastX = (float)SCR_WIDTH / 2.0;
Expand Down Expand Up @@ -69,7 +73,7 @@ int main()
// ------------------------------
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

#ifdef __APPLE__
Expand All @@ -89,6 +93,7 @@ int main()
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
glfwSetCursorPosCallback(window, mouse_callback);
glfwSetScrollCallback(window, scroll_callback);
glfwGetFramebufferSize(window, &fb_width, &fb_height);

// tell GLFW to capture our mouse
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
Expand Down Expand Up @@ -239,15 +244,15 @@ int main()
glBindFramebuffer(GL_FRAMEBUFFER, 0);

// reset viewport
glViewport(0, 0, SCR_WIDTH, SCR_HEIGHT);
glViewport(0, 0, fb_width, fb_height);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

// 2. render scene as normal using the generated depth/shadow map
// --------------------------------------------------------------
glViewport(0, 0, SCR_WIDTH, SCR_HEIGHT);
glViewport(0, 0, fb_width, fb_height);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
shader.use();
const glm::mat4 projection = glm::perspective(glm::radians(camera.Zoom), (float)SCR_WIDTH / (float)SCR_HEIGHT, cameraNearPlane, cameraFarPlane);
const glm::mat4 projection = glm::perspective(glm::radians(camera.Zoom), (float)fb_width / (float)fb_height, cameraNearPlane, cameraFarPlane);
const glm::mat4 view = camera.GetViewMatrix();
shader.setMat4("projection", projection);
shader.setMat4("view", view);
Expand Down Expand Up @@ -540,15 +545,15 @@ void processInput(GLFWwindow *window)
fPress = glfwGetKey(window, GLFW_KEY_F);

static int plusPress = GLFW_RELEASE;
if (glfwGetKey(window, GLFW_KEY_KP_ADD) == GLFW_RELEASE && plusPress == GLFW_PRESS)
if (glfwGetKey(window, GLFW_KEY_N) == GLFW_RELEASE && plusPress == GLFW_PRESS)
{
debugLayer++;
if (debugLayer > shadowCascadeLevels.size())
{
debugLayer = 0;
}
}
plusPress = glfwGetKey(window, GLFW_KEY_KP_ADD);
plusPress = glfwGetKey(window, GLFW_KEY_N);

static int cPress = GLFW_RELEASE;
if (glfwGetKey(window, GLFW_KEY_C) == GLFW_RELEASE && cPress == GLFW_PRESS)
Expand All @@ -564,6 +569,8 @@ void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
// make sure the viewport matches the new window dimensions; note that width and
// height will be significantly larger than specified on retina displays.
fb_width = width;
fb_height = height;
glViewport(0, 0, width, height);
}

Expand Down Expand Up @@ -662,7 +669,7 @@ std::vector<glm::vec4> getFrustumCornersWorldSpace(const glm::mat4& proj, const
glm::mat4 getLightSpaceMatrix(const float nearPlane, const float farPlane)
{
const auto proj = glm::perspective(
glm::radians(camera.Zoom), (float)SCR_WIDTH / (float)SCR_HEIGHT, nearPlane,
glm::radians(camera.Zoom), (float)fb_width / (float)fb_height, nearPlane,
farPlane);
const auto corners = getFrustumCornersWorldSpace(proj, camera.GetViewMatrix());

Expand Down Expand Up @@ -712,7 +719,6 @@ glm::mat4 getLightSpaceMatrix(const float nearPlane, const float farPlane)
}

const glm::mat4 lightProjection = glm::ortho(minX, maxX, minY, maxY, minZ, maxZ);

return lightProjection * lightView;
}

Expand Down

0 comments on commit ae3d985

Please sign in to comment.