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(