From 97b0e701b77ee134bf0cc731f70f8f04fe76d226 Mon Sep 17 00:00:00 2001
From: Tobias Frisch <tfrisch@uni-koblenz.de>
Date: Mon, 26 Sep 2022 19:49:46 +0200
Subject: [PATCH] Fix material loading of scenes

Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de>
---
 modules/scene/src/vkcv/scene/Scene.cpp | 29 +++++++++++++-------------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/modules/scene/src/vkcv/scene/Scene.cpp b/modules/scene/src/vkcv/scene/Scene.cpp
index 90d457c9..dfe3ac54 100644
--- a/modules/scene/src/vkcv/scene/Scene.cpp
+++ b/modules/scene/src/vkcv/scene/Scene.cpp
@@ -252,39 +252,39 @@ namespace vkcv::scene {
 		
 		if ((material.baseColor >= 0) && (material.baseColor < scene.textures.size())) {
 			loadImage(*m_core, scene, scene.textures[material.baseColor], vk::Format::eR8G8B8A8Srgb,
-					  diffuseImg,diffuseSmp);
+					  diffuseImg, diffuseSmp);
 		}
 		
 		ImageHandle normalImg;
 		SamplerHandle normalSmp;
 		
-		if ((material.baseColor >= 0) && (material.baseColor < scene.textures.size())) {
-			loadImage(*m_core, scene, scene.textures[material.baseColor], vk::Format::eR8G8B8A8Unorm,
-					  diffuseImg,diffuseSmp);
+		if ((material.normal >= 0) && (material.normal < scene.textures.size())) {
+			loadImage(*m_core, scene, scene.textures[material.normal], vk::Format::eR8G8B8A8Unorm,
+					  normalImg, normalSmp);
 		}
 		
 		ImageHandle metalRoughImg;
 		SamplerHandle metalRoughSmp;
 		
-		if ((material.baseColor >= 0) && (material.baseColor < scene.textures.size())) {
-			loadImage(*m_core, scene, scene.textures[material.baseColor], vk::Format::eR8G8B8A8Unorm,
-					  diffuseImg,diffuseSmp);
+		if ((material.metalRough >= 0) && (material.metalRough < scene.textures.size())) {
+			loadImage(*m_core, scene, scene.textures[material.metalRough], vk::Format::eR8G8B8A8Unorm,
+					  metalRoughImg, metalRoughSmp);
 		}
 		
 		ImageHandle occlusionImg;
 		SamplerHandle occlusionSmp;
 		
-		if ((material.baseColor >= 0) && (material.baseColor < scene.textures.size())) {
-			loadImage(*m_core, scene, scene.textures[material.baseColor], vk::Format::eR8G8B8A8Unorm,
-					  diffuseImg,diffuseSmp);
+		if ((material.occlusion >= 0) && (material.occlusion < scene.textures.size())) {
+			loadImage(*m_core, scene, scene.textures[material.occlusion], vk::Format::eR8G8B8A8Unorm,
+					  occlusionImg, occlusionSmp);
 		}
 		
 		ImageHandle emissionImg;
 		SamplerHandle emissionSmp;
 		
-		if ((material.baseColor >= 0) && (material.baseColor < scene.textures.size())) {
-			loadImage(*m_core, scene, scene.textures[material.baseColor], vk::Format::eR8G8B8A8Srgb,
-					  diffuseImg,diffuseSmp);
+		if ((material.emissive >= 0) && (material.emissive < scene.textures.size())) {
+			loadImage(*m_core, scene, scene.textures[material.emissive], vk::Format::eR8G8B8A8Srgb,
+					  emissionImg, emissionSmp);
 		}
 		
 		const float colorFactors [4] = {
@@ -297,7 +297,8 @@ namespace vkcv::scene {
 		const float emissionFactors[4] = {
 				material.emissiveFactor.r,
 				material.emissiveFactor.g,
-				material.emissiveFactor.b
+				material.emissiveFactor.b,
+				0.0f
 		};
 		
 		m_materials[index].m_data = material::Material::createPBR(
-- 
GitLab