diff --git a/modules/material/include/vkcv/material/pbrMetallicRoughness.hpp b/modules/material/include/vkcv/material/pbrMetallicRoughness.hpp
index cc97700f08cffc0fd7aac03539a73c0cd20fb806..55d6eb20d5dd9b0a76565fae3d2d2fcb89fb8a37 100644
--- a/modules/material/include/vkcv/material/pbrMetallicRoughness.hpp
+++ b/modules/material/include/vkcv/material/pbrMetallicRoughness.hpp
@@ -89,6 +89,10 @@ namespace vkcv::material
             SamplerHandle        &normalSmp,
             ImageHandle          &metRoughImg,
             SamplerHandle        &metRoughSmp,
+			ImageHandle			&occlusionImg,
+			SamplerHandle		&occlusionSmp,
+			ImageHandle			&emissiveImg,
+			SamplerHandle		&emissiveSmp,
             vec4 baseColorFactor,
             float metallicFactor,
             float roughnessFactor,
diff --git a/modules/material/src/vkcv/material/pbrMetallicRoughness.cpp b/modules/material/src/vkcv/material/pbrMetallicRoughness.cpp
index 8e8c7a4ef094e626913012048e2f8c4ca8328824..1ff743d8c82972921bca073acf2e8fbf95a5c8af 100644
--- a/modules/material/src/vkcv/material/pbrMetallicRoughness.cpp
+++ b/modules/material/src/vkcv/material/pbrMetallicRoughness.cpp
@@ -43,16 +43,22 @@ namespace vkcv::material
 
     std::vector<DescriptorBinding> PBRMaterial::getDescriptorBindings() noexcept
     {
-        return {{DescriptorType::IMAGE_SAMPLED, 1, ShaderStage::FRAGMENT},
-                {DescriptorType::SAMPLER      , 1, ShaderStage::FRAGMENT},
-                {DescriptorType::IMAGE_SAMPLED, 1, ShaderStage::FRAGMENT},
-                {DescriptorType::SAMPLER      , 1, ShaderStage::FRAGMENT},
-                {DescriptorType::IMAGE_SAMPLED, 1, ShaderStage::FRAGMENT},
-                {DescriptorType::SAMPLER      , 1, ShaderStage::FRAGMENT},
-                {DescriptorType::IMAGE_SAMPLED, 1, ShaderStage::FRAGMENT},
-                {DescriptorType::SAMPLER      , 1, ShaderStage::FRAGMENT},
-                {DescriptorType::IMAGE_SAMPLED, 1, ShaderStage::FRAGMENT},
-                {DescriptorType::SAMPLER      , 1, ShaderStage::FRAGMENT}};
+		static std::vector<DescriptorBinding> bindings;
+		
+		if (bindings.empty()) {
+			bindings.emplace_back(0, DescriptorType::IMAGE_SAMPLED, 1, ShaderStage::FRAGMENT);
+			bindings.emplace_back(1, DescriptorType::SAMPLER, 1, ShaderStage::FRAGMENT);
+			bindings.emplace_back(2, DescriptorType::IMAGE_SAMPLED, 1, ShaderStage::FRAGMENT);
+			bindings.emplace_back(3, DescriptorType::SAMPLER, 1, ShaderStage::FRAGMENT);
+			bindings.emplace_back(4, DescriptorType::IMAGE_SAMPLED, 1, ShaderStage::FRAGMENT);
+			bindings.emplace_back(5, DescriptorType::SAMPLER, 1, ShaderStage::FRAGMENT);
+			bindings.emplace_back(6, DescriptorType::IMAGE_SAMPLED, 1, ShaderStage::FRAGMENT);
+			bindings.emplace_back(7, DescriptorType::SAMPLER, 1, ShaderStage::FRAGMENT);
+			bindings.emplace_back(8, DescriptorType::IMAGE_SAMPLED, 1, ShaderStage::FRAGMENT);
+			bindings.emplace_back(9, DescriptorType::SAMPLER, 1, ShaderStage::FRAGMENT);
+		}
+    	
+        return bindings;
     }
 
     PBRMaterial PBRMaterial::create(