diff --git a/projects/rt_ambient_occlusion/src/main.cpp b/projects/rt_ambient_occlusion/src/main.cpp index c5472e9fa0a571dc0335e309ff0d1ac0cc7e3032..ce6c89a31044c9360e66491fc0a847a84784debd 100644 --- a/projects/rt_ambient_occlusion/src/main.cpp +++ b/projects/rt_ambient_occlusion/src/main.cpp @@ -143,15 +143,13 @@ int main(int argc, const char** argv) { const std::vector<vkcv::ImageHandle> renderTargets = { swapchainInput, depthBuffer }; - RaytracingPushConstantData raytracingPushData; - raytracingPushData.camera_position = glm::vec4(cameraManager.getActiveCamera().getPosition(),0); - raytracingPushData.camera_right = glm::vec4(glm::cross(cameraManager.getActiveCamera().getUp(), cameraManager.getActiveCamera().getFront()), 0); - raytracingPushData.camera_up = glm::vec4(cameraManager.getActiveCamera().getUp(),0); - raytracingPushData.camera_forward = glm::vec4(cameraManager.getActiveCamera().getFront(),0); + const glm::mat4 view = glm::transpose(cameraManager.getActiveCamera().getView()); - raytracingPushData.camera_right = glm::normalize(raytracingPushData.camera_right); - raytracingPushData.camera_up = glm::normalize(raytracingPushData.camera_up); - raytracingPushData.camera_forward = glm::normalize(raytracingPushData.camera_forward); + RaytracingPushConstantData raytracingPushData; + raytracingPushData.camera_position = glm::vec4(cameraManager.getActiveCamera().getPosition(), 0); + raytracingPushData.camera_right = glm::vec4(glm::vec3(view[0]), 0); + raytracingPushData.camera_up = glm::vec4(glm::vec3(view[1]), 0); + raytracingPushData.camera_forward = glm::vec4(glm::vec3(view[2]), 0); vkcv::PushConstants pushConstants = vkcv::pushConstants<RaytracingPushConstantData>(); pushConstants.appendDrawcall(raytracingPushData);