Skip to content
Snippets Groups Projects
Commit 49066023 authored by Lars Hoerttrich's avatar Lars Hoerttrich
Browse files

[#57] changed to static create method

parent dfa6d222
No related branches found
No related tags found
1 merge request!44Resolve "Material (Modul)"
Pipeline #25629 failed
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
namespace vkcv::material namespace vkcv::material
{ {
class Core;
class PBRMaterial : Material class PBRMaterial : Material
{ {
public: public:
...@@ -50,7 +49,14 @@ namespace vkcv::material ...@@ -50,7 +49,14 @@ namespace vkcv::material
*/ */
static std::vector<DescriptorBinding> getDescriptorBindings() noexcept; static std::vector<DescriptorBinding> getDescriptorBindings() noexcept;
void create(vkcv::Core core); static PBRMaterial create(
vkcv::Core* core,
ImageHandle &colorImg,
SamplerHandle &colorSmp,
ImageHandle &normalImg,
SamplerHandle &normalSmp,
ImageHandle &metRoughImg,
SamplerHandle &metRoughSmp);
}; };
} }
\ No newline at end of file
...@@ -3,21 +3,23 @@ ...@@ -3,21 +3,23 @@
namespace vkcv::material namespace vkcv::material
{ {
PBRMaterial::PBRMaterial(const ImageHandle &colorImg, PBRMaterial::PBRMaterial(
const SamplerHandle &colorSmp, const ImageHandle &colorImg,
const ImageHandle &normalImg, const SamplerHandle &colorSmp,
const SamplerHandle &normalSmp, const ImageHandle &normalImg,
const ImageHandle &metRoughImg, const SamplerHandle &normalSmp,
const SamplerHandle &metRoughSmp, const ImageHandle &metRoughImg,
const DescriptorSetHandle &setHandle) noexcept : const SamplerHandle &metRoughSmp,
m_ColorTexture(colorImg), const DescriptorSetHandle &setHandle) noexcept :
m_ColorSampler(colorSmp), m_ColorTexture(colorImg),
m_NormalTexture(normalImg), m_ColorSampler(colorSmp),
m_NormalSampler(normalSmp), m_NormalTexture(normalImg),
m_MetRoughTexture(metRoughImg), m_NormalSampler(normalSmp),
m_MetRoughSampler(metRoughSmp), m_MetRoughTexture(metRoughImg),
m_DescriptorSetHandle(setHandle) m_MetRoughSampler(metRoughSmp),
{} m_DescriptorSetHandle(setHandle)
{
}
std::vector<DescriptorBinding> PBRMaterial::getDescriptorBindings() noexcept std::vector<DescriptorBinding> PBRMaterial::getDescriptorBindings() noexcept
{ {
...@@ -28,61 +30,65 @@ namespace vkcv::material ...@@ -28,61 +30,65 @@ namespace vkcv::material
{DescriptorType::IMAGE_SAMPLED, 1, ShaderStage::FRAGMENT}, {DescriptorType::IMAGE_SAMPLED, 1, ShaderStage::FRAGMENT},
{DescriptorType::SAMPLER , 1, ShaderStage::FRAGMENT}}; {DescriptorType::SAMPLER , 1, ShaderStage::FRAGMENT}};
} }
void PBRMaterial::create(vkcv::Core core) PBRMaterial PBRMaterial::create(
{ vkcv::Core* core,
ImageHandle& colorImg,
SamplerHandle& colorSmp,
ImageHandle& normalImg,
SamplerHandle& normalSmp,
ImageHandle& metRoughImg,
SamplerHandle& metRoughSmp)
{
//Test if Images and samplers valid, if not use default //Test if Images and samplers valid, if not use default
if (m_ColorTexture) { if (colorImg) {
//TODO //TODO
} }
if (m_NormalTexture) { if (normalImg) {
//TODO //TODO
} }
if (m_MetRoughTexture) { if (metRoughImg) {
//TODO //TODO
} }
if (m_ColorSampler) { if (colorSmp) {
/* colorSmp = core->createSampler(
m_ColorSampler = core.createSampler(
vkcv::SamplerFilterType::LINEAR, vkcv::SamplerFilterType::LINEAR,
vkcv::SamplerFilterType::LINEAR, vkcv::SamplerFilterType::LINEAR,
vkcv::SamplerMipmapMode::LINEAR, vkcv::SamplerMipmapMode::LINEAR,
vkcv::SamplerAddressMode::REPEAT vkcv::SamplerAddressMode::REPEAT
);//only non const member );
*/
} }
if (m_NormalSampler) { if (normalSmp) {
/* normalSmp = core->createSampler(
m_NormalSampler = core.createSampler(
vkcv::SamplerFilterType::LINEAR, vkcv::SamplerFilterType::LINEAR,
vkcv::SamplerFilterType::LINEAR, vkcv::SamplerFilterType::LINEAR,
vkcv::SamplerMipmapMode::LINEAR, vkcv::SamplerMipmapMode::LINEAR,
vkcv::SamplerAddressMode::REPEAT vkcv::SamplerAddressMode::REPEAT
); //only non const member );
*/
} }
if (m_MetRoughSampler) { if (metRoughSmp) {
/* metRoughSmp = core->createSampler(
m_MetRoughSampler = core.createSampler(
vkcv::SamplerFilterType::LINEAR, vkcv::SamplerFilterType::LINEAR,
vkcv::SamplerFilterType::LINEAR, vkcv::SamplerFilterType::LINEAR,
vkcv::SamplerMipmapMode::LINEAR, vkcv::SamplerMipmapMode::LINEAR,
vkcv::SamplerAddressMode::REPEAT vkcv::SamplerAddressMode::REPEAT
); //only non const member );
*/
} }
//create descriptorset //create descriptorset
vkcv::DescriptorSetHandle descriptorSet = core.createDescriptorSet(getDescriptorBindings()); vkcv::DescriptorSetHandle descriptorSetHandle = core->createDescriptorSet(getDescriptorBindings());
//writes //writes
vkcv::DescriptorWrites setWrites; vkcv::DescriptorWrites setWrites;
setWrites.sampledImageWrites = { setWrites.sampledImageWrites = {
vkcv::SampledImageDescriptorWrite(0, m_ColorTexture), vkcv::SampledImageDescriptorWrite(0, colorImg),
vkcv::SampledImageDescriptorWrite(2, m_NormalTexture), vkcv::SampledImageDescriptorWrite(2, normalImg),
vkcv::SampledImageDescriptorWrite(4, m_MetRoughTexture) }; vkcv::SampledImageDescriptorWrite(4, metRoughImg) };
setWrites.samplerWrites = { setWrites.samplerWrites = {
vkcv::SamplerDescriptorWrite(1, m_ColorSampler), vkcv::SamplerDescriptorWrite(1, colorSmp),
vkcv::SamplerDescriptorWrite(3, m_NormalSampler), vkcv::SamplerDescriptorWrite(3, normalSmp),
vkcv::SamplerDescriptorWrite(5, m_MetRoughSampler) }; vkcv::SamplerDescriptorWrite(5, metRoughSmp) };
core.writeResourceDescription(descriptorSet, 0, setWrites); core->writeResourceDescription(descriptorSetHandle, 0, setWrites);
return PBRMaterial(colorImg, colorSmp, normalImg, normalSmp, metRoughImg, metRoughSmp, descriptorSetHandle);
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment