mirror of
https://github.com/JoeyDeVries/LearnOpenGL.git
synced 2026-01-30 20:13: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;
|
out vec4 FragColor;
|
||||||
|
|
||||||
uniform vec4 color;
|
uniform vec4 color;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#version 460 core
|
#version 410 core
|
||||||
out vec4 FragColor;
|
out vec4 FragColor;
|
||||||
|
|
||||||
in vec2 TexCoords;
|
in vec2 TexCoords;
|
||||||
|
|||||||
@@ -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];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#version 460 core
|
#version 410 core
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user