1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-06-07 13:47:45 +00:00

Make lighting work (finally)

Now it can display a directional light source, albeit in a tiny
hardcoded size. Time to clean up my mess!
This commit is contained in:
Joshua Goins 2024-04-21 14:05:41 -04:00
parent eb9e5dc094
commit 7bba79f62f
2 changed files with 14 additions and 6 deletions

View file

@ -89,7 +89,7 @@ private:
glm::mat3x4 m_InverseViewMatrix;
glm::mat4 m_ViewProjectionMatrix;
glm::mat4 m_InverseViewProjectionMatrix;
glm::mat4 m_InverseProjectionMatrix;
glm::mat4 m_InverseProjectionMatrix; // used for view position recalc
glm::mat4 m_ProjectionMatrix; // FIXME: ourburos is wrong, this is actually viewProjection
glm::mat4 m_MainViewToProjectionMatrix;
glm::vec3 m_EyePosition;

View file

@ -130,7 +130,7 @@ RenderSystem::RenderSystem(Renderer &renderer, GameData *data)
g_LightParam = createUniformBuffer(sizeof(LightParam));
LightParam lightParam{};
lightParam.m_Position = glm::vec4(5);
lightParam.m_Position = glm::vec4(-5);
lightParam.m_Direction = glm::normalize(glm::vec4(0) - lightParam.m_Position);
lightParam.m_DiffuseColor = glm::vec4(1);
lightParam.m_SpecularColor = glm::vec4(1);
@ -146,7 +146,12 @@ RenderSystem::RenderSystem(Renderer &renderer, GameData *data)
g_CommonParameter = createUniformBuffer(sizeof(CommonParameter));
CommonParameter commonParam{};
commonParam.m_RenderTarget = {640.0f, 480.0f, 0.0f, 0.0f}; // used to convert screen-space coordinates back into 0.0-1.0
/*commonParam.m_RenderTarget = {1640.0f / 2.0f,
480.0f / 2.0f,
640.0f / 2.0,
480.0f / 2.0}; // used to convert screen-space coordinates back into 0.0-1.0
*/
commonParam.m_RenderTarget = {1.0f / 640.0f, 1.0f / 480.0f, 0.0f, 0.0f}; // used to convert screen-space coordinates back into 0.0-1.0
copyDataToUniform(g_CommonParameter, &commonParam, sizeof(CommonParameter));
}
@ -172,9 +177,12 @@ void RenderSystem::render(uint32_t imageIndex, VkCommandBuffer commandBuffer)
cameraParameter.m_InverseViewMatrix = glm::transpose(glm::inverse(viewMatrix));
cameraParameter.m_ViewProjectionMatrix = glm::transpose(viewProjectionMatrix);
cameraParameter.m_InverseViewProjectionMatrix = glm::transpose(glm::inverse(viewProjectionMatrix));
cameraParameter.m_InverseProjectionMatrix = glm::transpose(glm::inverse(projectionMatrix));
cameraParameter.m_ProjectionMatrix = cameraParameter.m_ViewProjectionMatrix;
cameraParameter.m_MainViewToProjectionMatrix = cameraParameter.m_InverseViewProjectionMatrix;
// known params
cameraParameter.m_InverseProjectionMatrix = glm::transpose(glm::inverse(viewProjectionMatrix));
cameraParameter.m_ProjectionMatrix = glm::transpose(viewProjectionMatrix);
cameraParameter.m_MainViewToProjectionMatrix = glm::transpose(glm::inverse(projectionMatrix));
cameraParameter.m_EyePosition = glm::vec3(5.0f); // placeholder
cameraParameter.m_LookAtVector = glm::vec3(0.0f); // placeholder