mirror of
https://github.com/JoeyDeVries/LearnOpenGL.git
synced 2026-01-30 12:03:22 +08:00
Merge pull request #358 from agnat/fix/8.2.csm
2.3.csm: fix mac os issues
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#version 460 core
|
||||
#version 410 core
|
||||
out vec4 FragColor;
|
||||
|
||||
uniform vec4 color;
|
||||
@@ -6,4 +6,4 @@ uniform vec4 color;
|
||||
void main()
|
||||
{
|
||||
FragColor = color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#version 460 core
|
||||
#version 410 core
|
||||
layout (location = 0) in vec3 aPos;
|
||||
|
||||
uniform mat4 view;
|
||||
@@ -7,4 +7,4 @@ uniform mat4 projection;
|
||||
void main()
|
||||
{
|
||||
gl_Position = projection * view * vec4(aPos, 1.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#version 460 core
|
||||
#version 410 core
|
||||
layout (location = 0) in vec3 aPos;
|
||||
layout (location = 1) in vec2 aTexCoords;
|
||||
|
||||
@@ -8,4 +8,4 @@ void main()
|
||||
{
|
||||
TexCoords = aTexCoords;
|
||||
gl_Position = vec4(aPos, 1.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#version 460 core
|
||||
#version 410 core
|
||||
out vec4 FragColor;
|
||||
|
||||
in vec2 TexCoords;
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#version 460 core
|
||||
#version 410 core
|
||||
out vec4 FragColor;
|
||||
|
||||
in VS_OUT {
|
||||
@@ -16,7 +16,7 @@ uniform float farPlane;
|
||||
|
||||
uniform mat4 view;
|
||||
|
||||
layout (std140, binding = 0) uniform LightSpaceMatrices
|
||||
layout (std140) uniform LightSpaceMatrices
|
||||
{
|
||||
mat4 lightSpaceMatrices[16];
|
||||
};
|
||||
@@ -108,4 +108,4 @@ void main()
|
||||
vec3 lighting = (ambient + (1.0 - shadow) * (diffuse + specular)) * color;
|
||||
|
||||
FragColor = vec4(lighting, 1.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#version 460 core
|
||||
#version 410 core
|
||||
|
||||
void main()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
@@ -17,4 +20,4 @@ void main()
|
||||
EmitVertex();
|
||||
}
|
||||
EndPrimitive();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#version 460 core
|
||||
#version 410 core
|
||||
layout (location = 0) in vec3 aPos;
|
||||
|
||||
uniform mat4 model;
|
||||
@@ -6,4 +6,4 @@ uniform mat4 model;
|
||||
void main()
|
||||
{
|
||||
gl_Position = model * vec4(aPos, 1.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
@@ -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__
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
@@ -540,7 +545,7 @@ 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())
|
||||
@@ -548,7 +553,7 @@ void processInput(GLFWwindow *window)
|
||||
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)
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user