From 10661e87a65fe40c66c6efdd54b942540fc2521e Mon Sep 17 00:00:00 2001
From: Vanessa Karolek <vaka1997@uni-koblenz.de>
Date: Mon, 26 Jul 2021 15:32:08 +0200
Subject: [PATCH] [#94] correct projected texture coordinates

---
 projects/saf_r/shaders/shader.vert | 5 +++--
 projects/saf_r/src/main.cpp        | 9 +++++----
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/projects/saf_r/shaders/shader.vert b/projects/saf_r/shaders/shader.vert
index fe51e232..b6419f5e 100644
--- a/projects/saf_r/shaders/shader.vert
+++ b/projects/saf_r/shaders/shader.vert
@@ -6,6 +6,7 @@ layout(location = 1) out vec2 texCoord;
 
 layout( push_constant ) uniform constants{
     mat4 mvp;
+    mat4 proj;
 };
 
 void main()	{
@@ -24,8 +25,8 @@ void main()	{
     vec4 position = mvp * vec4(positions[gl_VertexIndex], 1.0);
 	gl_Position = position;
 
-    texCoord.x = (positions[gl_VertexIndex].x + 1.0) * 0.5;
-    texCoord.y = (-positions[gl_VertexIndex].y + 1.0) * 0.5;
+    texCoord.x = ((proj * vec4(positions[gl_VertexIndex], 1.0)).x + 1.0) * 0.5;
+    texCoord.y = ((proj * vec4(positions[gl_VertexIndex], 1.0)).y + 1.0) * 0.5;
 
 	fragColor = colors[gl_VertexIndex];
 }
\ No newline at end of file
diff --git a/projects/saf_r/src/main.cpp b/projects/saf_r/src/main.cpp
index 00359492..886f8473 100644
--- a/projects/saf_r/src/main.cpp
+++ b/projects/saf_r/src/main.cpp
@@ -175,10 +175,10 @@ int main(int argc, const char** argv) {
     Material     mirror(glm::vec3(0.0, 10.0, 0.8), glm::vec3(1.0, 1.0, 1.0), 1425.);
 
     std::vector<Sphere> spheres;
-    spheres.push_back(Sphere(glm::vec3(-3,    0,   -16), 2,      ivory));
+    spheres.push_back(Sphere(glm::vec3(-3,    0,   -16), 2, ivory));
     spheres.push_back(Sphere(glm::vec3(-1.0, -1.5, -12), 2, mirror));
     spheres.push_back(Sphere(glm::vec3( 1.5, -0.5, -18), 3, red_rubber));
-    spheres.push_back(Sphere(glm::vec3( 7,    5,   -18), 4,      mirror));
+    spheres.push_back(Sphere(glm::vec3( 7,    5,   -18), 4, mirror));
 
     std::vector<Light> lights;
     lights.push_back(Light(glm::vec3(-20, 20, 20), 1.5));
@@ -278,9 +278,10 @@ int main(int argc, const char** argv) {
 
         cameraManager.update(0.000001 * static_cast<double>(deltatime.count()));
         glm::mat4 mvp = cameraManager.getActiveCamera().getMVP();
+        glm::mat4 proj = cameraManager.getActiveCamera().getProjection();
 
-        vkcv::PushConstants pushConstants (sizeof(glm::mat4));
-        pushConstants.appendDrawcall(mvp);
+        vkcv::PushConstants pushConstants (sizeof(glm::mat4) * 2);
+        pushConstants.appendDrawcall(std::array<glm::mat4, 2>{ mvp, proj });
 
         auto cmdStream = core.createCommandStream(vkcv::QueueType::Graphics);
 
-- 
GitLab