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

Fix view position in Dawntrail renderer

This commit is contained in:
Joshua Goins 2025-06-03 05:44:00 -04:00
parent 05ab7dfc21
commit fe2e1a83ae
2 changed files with 6 additions and 4 deletions

View file

@ -4,6 +4,7 @@
#pragma once
// Structure definitions from https://github.com/Shaderlayan/Ouroboros
// TODO: I really need to update these names, they're all wrong for DT?
struct CameraParameter {
glm::mat3x4 m_InverseViewMatrix;
glm::mat3x4 m_ViewMatrix; // TODO: does it need alignment?
@ -18,7 +19,7 @@ struct CameraParameter {
glm::mat4 m_unknownMatrix; // used in a vertex shader in characterlegacy.shpk
glm::vec4 m_unknown2[11];
// Dawntrail: something accesses the z and w of this
glm::vec4 m_unknown3;
glm::mat4 m_unknown4; // noooo idea
};
const int JOINT_MATRIX_SIZE_ARR = 64;

View file

@ -282,7 +282,8 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, Camera &camera, Scene &
const glm::mat4 viewProjectionMatrix = camera.perspective * camera.view;
// unknown
cameraParameter.m_unknownMatrix = glm::transpose(camera.perspective);
cameraParameter.m_unknownMatrix = glm::mat4(1.0f);
cameraParameter.m_unknown4 = glm::mat4(1.0f);
cameraParameter.m_ViewMatrix = glm::transpose(camera.view);
cameraParameter.m_InverseViewMatrix = cameraParameter.m_unknownMatrix;
@ -293,14 +294,14 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, Camera &camera, Scene &
cameraParameter.m_InverseProjectionMatrix = glm::transpose(glm::inverse(viewProjectionMatrix));
cameraParameter.m_ProjectionMatrix = glm::transpose(viewProjectionMatrix);
cameraParameter.m_MainViewToProjectionMatrix = glm::transpose(camera.perspective);
cameraParameter.m_MainViewToProjectionMatrix = glm::transpose(viewProjectionMatrix);
cameraParameter.m_EyePosition = glm::vec4(camera.position, 0.0f);
cameraParameter.m_LookAtVector = glm::vec4(0.0f); // placeholder
m_device.copyToBuffer(g_CameraParameter, &cameraParameter, sizeof(CameraParameter));
WorldViewMatrix worldViewMatrix;
worldViewMatrix.m_WorldViewMatrix = cameraParameter.m_ViewMatrix;
worldViewMatrix.m_WorldViewMatrix = glm::mat4(1.0f);
worldViewMatrix.m_EyePosition = glm::vec4(camera.position, 0.0f);
m_device.copyToBuffer(g_WorldViewMatrix, &worldViewMatrix, sizeof(WorldViewMatrix));