diff --git a/modules/material/include/vkcv/material/pbrMetallicRoughness.hpp b/modules/material/include/vkcv/material/pbrMetallicRoughness.hpp index 548b637b3e96b34bbe0f89ade5d550ad685b32e8..09068a31e861b2498908f5158613fa98aa5923f6 100644 --- a/modules/material/include/vkcv/material/pbrMetallicRoughness.hpp +++ b/modules/material/include/vkcv/material/pbrMetallicRoughness.hpp @@ -4,11 +4,14 @@ #include <vkcv/Handles.hpp> #include <vkcv/DescriptorConfig.hpp> +#include <vkcv/Core.hpp> + #include "Material.hpp" namespace vkcv::material { + class Core; class pbrMaterial : Material { public: @@ -46,5 +49,8 @@ namespace vkcv::material * 5 - metallic roughness sampler */ static std::vector<DescriptorBinding> getDescriptorBindings() noexcept; + + void create(vkcv::Core core); + }; } \ No newline at end of file diff --git a/modules/material/src/vkcv/material/pbrMetallicRoughness.cpp b/modules/material/src/vkcv/material/pbrMetallicRoughness.cpp index d61da82eee8b5484f6804e6242f18146b24ef01d..da915c78d051047dceeebda7a5733c6650105e11 100644 --- a/modules/material/src/vkcv/material/pbrMetallicRoughness.cpp +++ b/modules/material/src/vkcv/material/pbrMetallicRoughness.cpp @@ -1,5 +1,6 @@ #include "vkcv/material/pbrMetallicRoughness.hpp" + namespace vkcv::material { pbrMaterial::pbrMaterial(const ImageHandle &colorImg, @@ -27,4 +28,28 @@ namespace vkcv::material {DescriptorType::IMAGE_SAMPLED, 1, ShaderStage::FRAGMENT}, {DescriptorType::SAMPLER , 1, ShaderStage::FRAGMENT}}; } + void pbrMaterial::create(vkcv::Core core) + { + //Test if Images and samplers valid + //create default + vkcv::SamplerHandle defaultSampler = core.createSampler( + vkcv::SamplerFilterType::LINEAR, + vkcv::SamplerFilterType::LINEAR, + vkcv::SamplerMipmapMode::LINEAR, + vkcv::SamplerAddressMode::REPEAT + ); + //create descriptorset + vkcv::DescriptorSetHandle descriptorSet = core.createDescriptorSet(getDescriptorBindings()); + //writes + vkcv::DescriptorWrites setWrites; + setWrites.sampledImageWrites = { + vkcv::SampledImageDescriptorWrite(0, m_ColorTexture), + vkcv::SampledImageDescriptorWrite(2, m_NormalTexture), + vkcv::SampledImageDescriptorWrite(4, m_MetRoughTexture) }; + setWrites.samplerWrites = { + vkcv::SamplerDescriptorWrite(1, m_ColorSampler), + vkcv::SamplerDescriptorWrite(3, m_NormalSampler), + vkcv::SamplerDescriptorWrite(5, m_MetRoughSampler) }; + core.writeResourceDescription(descriptorSet, 0, setWrites); + } } \ No newline at end of file