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);