From 8bf8f8e085e7928d34fd305c85f78f2764ec7cfb Mon Sep 17 00:00:00 2001
From: Mara Vogt <mvogt@uni-koblenz.de>
Date: Wed, 25 Aug 2021 17:49:21 +0200
Subject: [PATCH] [#94] fixed alignment issues and descriptorwrite overwrite
 issues

---
 projects/saf_r/shaders/raytracing.comp | 8 ++++----
 projects/saf_r/src/main.cpp            | 8 +++++---
 projects/saf_r/src/safrScene.hpp       | 2 +-
 3 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/projects/saf_r/shaders/raytracing.comp b/projects/saf_r/shaders/raytracing.comp
index fd6d6898..042b532b 100644
--- a/projects/saf_r/shaders/raytracing.comp
+++ b/projects/saf_r/shaders/raytracing.comp
@@ -2,19 +2,19 @@
 #extension GL_ARB_separate_shader_objects : enable
 
 struct Material {
-	vec3 diffuse_color;
 	vec3 albedo;
+	vec3 diffuse_color;
 	float specular_exponent;
 };
 
 layout(std430, binding = 0) coherent buffer Lights{
-	vec3 position [];
-	float intensity [];
+	vec3 position;
+	float intensity;
 };
 
 layout(std430, binding = 1) coherent buffer Materials{
-	vec3 diffuse_color;
 	vec3 albedo;
+	vec3 diffuse_color;
 	float specular_exponent;
 };
 
diff --git a/projects/saf_r/src/main.cpp b/projects/saf_r/src/main.cpp
index 45da7182..a39ad8e8 100644
--- a/projects/saf_r/src/main.cpp
+++ b/projects/saf_r/src/main.cpp
@@ -119,19 +119,19 @@ int main(int argc, const char** argv) {
 	vkcv::Buffer<safrScene::Light> lightsBuffer = core.createBuffer<safrScene::Light>(
 		vkcv::BufferType::STORAGE,
 		lights.size()
-		);
+	);
 	lightsBuffer.fill(lights);
 
 	vkcv::Buffer<safrScene::Sphere> sphereBuffer = core.createBuffer<safrScene::Sphere>(
 		vkcv::BufferType::STORAGE,
 		spheres.size()
-		);
+	);
 	sphereBuffer.fill(spheres);
 
 	vkcv::Buffer<safrScene::Material> materialBuffer = core.createBuffer<safrScene::Material>(
 		vkcv::BufferType::STORAGE,
 		materials.size()
-		);
+	);
 	materialBuffer.fill(materials);
 
 
@@ -142,7 +142,9 @@ int main(int argc, const char** argv) {
 
 	vkcv::DescriptorWrites computeWrites;
 	computeWrites.storageBufferWrites = { vkcv::BufferDescriptorWrite(0,lightsBuffer.getHandle()) };
+	core.writeDescriptorSet(computeDescriptorSet, computeWrites);
 	computeWrites.storageBufferWrites = { vkcv::BufferDescriptorWrite(1,materialBuffer.getHandle()) };
+	core.writeDescriptorSet(computeDescriptorSet, computeWrites);
 	computeWrites.storageBufferWrites = { vkcv::BufferDescriptorWrite(2,sphereBuffer.getHandle()) };
 	core.writeDescriptorSet(computeDescriptorSet, computeWrites);
 
diff --git a/projects/saf_r/src/safrScene.hpp b/projects/saf_r/src/safrScene.hpp
index fa1f9dd4..a3396afe 100644
--- a/projects/saf_r/src/safrScene.hpp
+++ b/projects/saf_r/src/safrScene.hpp
@@ -39,8 +39,8 @@ public:
 	struct Material {
 		Material(const glm::vec3& a, const glm::vec3& color, const float& spec) : albedo(a), diffuse_color(color), specular_exponent(spec) {}
 		Material() : albedo(1, 0, 0), diffuse_color(), specular_exponent() {}
-		glm::vec3 diffuse_color;
 		glm::vec3 albedo;
+		alignas(16) glm::vec3 diffuse_color;
 		float specular_exponent;
 	};
 
-- 
GitLab