Merge pull request #358 from agnat/fix/8.2.csm

2.3.csm: fix mac os issues
This commit is contained in:
Joey de Vries
2023-05-18 16:07:32 +02:00
committed by GitHub
10 changed files with 37 additions and 28 deletions

View File

@@ -1,4 +1,4 @@
#version 460 core #version 410 core
out vec4 FragColor; out vec4 FragColor;
uniform vec4 color; uniform vec4 color;
@@ -6,4 +6,4 @@ uniform vec4 color;
void main() void main()
{ {
FragColor = color; FragColor = color;
} }

View File

@@ -1,4 +1,4 @@
#version 460 core #version 410 core
layout (location = 0) in vec3 aPos; layout (location = 0) in vec3 aPos;
uniform mat4 view; uniform mat4 view;
@@ -7,4 +7,4 @@ uniform mat4 projection;
void main() void main()
{ {
gl_Position = projection * view * vec4(aPos, 1.0); gl_Position = projection * view * vec4(aPos, 1.0);
} }

View File

@@ -1,4 +1,4 @@
#version 460 core #version 410 core
layout (location = 0) in vec3 aPos; layout (location = 0) in vec3 aPos;
layout (location = 1) in vec2 aTexCoords; layout (location = 1) in vec2 aTexCoords;
@@ -8,4 +8,4 @@ void main()
{ {
TexCoords = aTexCoords; TexCoords = aTexCoords;
gl_Position = vec4(aPos, 1.0); gl_Position = vec4(aPos, 1.0);
} }

View File

@@ -1,4 +1,4 @@
#version 460 core #version 410 core
out vec4 FragColor; out vec4 FragColor;
in vec2 TexCoords; in vec2 TexCoords;
@@ -20,4 +20,4 @@ void main()
float depthValue = texture(depthMap, vec3(TexCoords, layer)).r; float depthValue = texture(depthMap, vec3(TexCoords, layer)).r;
// FragColor = vec4(vec3(LinearizeDepth(depthValue) / far_plane), 1.0); // perspective // FragColor = vec4(vec3(LinearizeDepth(depthValue) / far_plane), 1.0); // perspective
FragColor = vec4(vec3(depthValue), 1.0); // orthographic FragColor = vec4(vec3(depthValue), 1.0); // orthographic
} }

View File

@@ -1,4 +1,4 @@
#version 460 core #version 410 core
out vec4 FragColor; out vec4 FragColor;
in VS_OUT { in VS_OUT {
@@ -16,7 +16,7 @@ uniform float farPlane;
uniform mat4 view; uniform mat4 view;
layout (std140, binding = 0) uniform LightSpaceMatrices layout (std140) uniform LightSpaceMatrices
{ {
mat4 lightSpaceMatrices[16]; mat4 lightSpaceMatrices[16];
}; };
@@ -108,4 +108,4 @@ void main()
vec3 lighting = (ambient + (1.0 - shadow) * (diffuse + specular)) * color; vec3 lighting = (ambient + (1.0 - shadow) * (diffuse + specular)) * color;
FragColor = vec4(lighting, 1.0); FragColor = vec4(lighting, 1.0);
} }

View File

@@ -1,4 +1,4 @@
#version 460 core #version 410 core
layout (location = 0) in vec3 aPos; layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aNormal; layout (location = 1) in vec3 aNormal;
layout (location = 2) in vec2 aTexCoords; layout (location = 2) in vec2 aTexCoords;
@@ -21,4 +21,4 @@ void main()
vs_out.Normal = transpose(inverse(mat3(model))) * aNormal; vs_out.Normal = transpose(inverse(mat3(model))) * aNormal;
vs_out.TexCoords = aTexCoords; vs_out.TexCoords = aTexCoords;
gl_Position = projection * view * model * vec4(aPos, 1.0); gl_Position = projection * view * model * vec4(aPos, 1.0);
} }

View File

@@ -1,5 +1,5 @@
#version 460 core #version 410 core
void main() void main()
{ {
} }

View File

@@ -1,12 +1,15 @@
#version 460 core #version 410 core
layout(triangles, invocations = 5) in; layout(triangles, invocations = 5) in;
layout(triangle_strip, max_vertices = 3) out; layout(triangle_strip, max_vertices = 3) out;
layout (std140, binding = 0) uniform LightSpaceMatrices layout (std140) uniform LightSpaceMatrices
{ {
mat4 lightSpaceMatrices[16]; mat4 lightSpaceMatrices[16];
}; };
/*
uniform mat4 lightSpaceMatrices[16];
*/
void main() void main()
{ {
@@ -17,4 +20,4 @@ void main()
EmitVertex(); EmitVertex();
} }
EndPrimitive(); EndPrimitive();
} }

View File

@@ -1,4 +1,4 @@
#version 460 core #version 410 core
layout (location = 0) in vec3 aPos; layout (location = 0) in vec3 aPos;
uniform mat4 model; uniform mat4 model;
@@ -6,4 +6,4 @@ uniform mat4 model;
void main() void main()
{ {
gl_Position = model * vec4(aPos, 1.0); gl_Position = model * vec4(aPos, 1.0);
} }

View File

@@ -30,6 +30,10 @@ void drawCascadeVolumeVisualizers(const std::vector<glm::mat4>& lightMatrices, S
const unsigned int SCR_WIDTH = 2560; const unsigned int SCR_WIDTH = 2560;
const unsigned int SCR_HEIGHT = 1440; const unsigned int SCR_HEIGHT = 1440;
// framebuffer size
int fb_width;
int fb_height;
// camera // camera
Camera camera(glm::vec3(0.0f, 0.0f, 3.0f)); Camera camera(glm::vec3(0.0f, 0.0f, 3.0f));
float lastX = (float)SCR_WIDTH / 2.0; float lastX = (float)SCR_WIDTH / 2.0;
@@ -69,7 +73,7 @@ int main()
// ------------------------------ // ------------------------------
glfwInit(); glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); 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); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
#ifdef __APPLE__ #ifdef __APPLE__
@@ -89,6 +93,7 @@ int main()
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
glfwSetCursorPosCallback(window, mouse_callback); glfwSetCursorPosCallback(window, mouse_callback);
glfwSetScrollCallback(window, scroll_callback); glfwSetScrollCallback(window, scroll_callback);
glfwGetFramebufferSize(window, &fb_width, &fb_height);
// tell GLFW to capture our mouse // tell GLFW to capture our mouse
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
@@ -239,15 +244,15 @@ int main()
glBindFramebuffer(GL_FRAMEBUFFER, 0); glBindFramebuffer(GL_FRAMEBUFFER, 0);
// reset viewport // 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); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// 2. render scene as normal using the generated depth/shadow map // 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); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
shader.use(); 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(); const glm::mat4 view = camera.GetViewMatrix();
shader.setMat4("projection", projection); shader.setMat4("projection", projection);
shader.setMat4("view", view); shader.setMat4("view", view);
@@ -540,7 +545,7 @@ void processInput(GLFWwindow *window)
fPress = glfwGetKey(window, GLFW_KEY_F); fPress = glfwGetKey(window, GLFW_KEY_F);
static int plusPress = GLFW_RELEASE; 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++; debugLayer++;
if (debugLayer > shadowCascadeLevels.size()) if (debugLayer > shadowCascadeLevels.size())
@@ -548,7 +553,7 @@ void processInput(GLFWwindow *window)
debugLayer = 0; debugLayer = 0;
} }
} }
plusPress = glfwGetKey(window, GLFW_KEY_KP_ADD); plusPress = glfwGetKey(window, GLFW_KEY_N);
static int cPress = GLFW_RELEASE; static int cPress = GLFW_RELEASE;
if (glfwGetKey(window, GLFW_KEY_C) == GLFW_RELEASE && cPress == GLFW_PRESS) if (glfwGetKey(window, GLFW_KEY_C) == GLFW_RELEASE && cPress == GLFW_PRESS)
@@ -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 // make sure the viewport matches the new window dimensions; note that width and
// height will be significantly larger than specified on retina displays. // height will be significantly larger than specified on retina displays.
fb_width = width;
fb_height = height;
glViewport(0, 0, width, height); glViewport(0, 0, width, height);
} }
@@ -662,7 +669,7 @@ std::vector<glm::vec4> getFrustumCornersWorldSpace(const glm::mat4& proj, const
glm::mat4 getLightSpaceMatrix(const float nearPlane, const float farPlane) glm::mat4 getLightSpaceMatrix(const float nearPlane, const float farPlane)
{ {
const auto proj = glm::perspective( 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); farPlane);
const auto corners = getFrustumCornersWorldSpace(proj, camera.GetViewMatrix()); const auto corners = getFrustumCornersWorldSpace(proj, camera.GetViewMatrix());
@@ -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); const glm::mat4 lightProjection = glm::ortho(minX, maxX, minY, maxY, minZ, maxZ);
return lightProjection * lightView; return lightProjection * lightView;
} }