WIP
This commit is contained in:
parent
1117ecc5ef
commit
c16bea2d39
|
@ -172,7 +172,7 @@ namespace SHADE
|
|||
// write sampler and image view
|
||||
auto& [view, sampler, layout] = imageViewsAndSamplers[i];
|
||||
writeInfo.descImageInfos[i].imageView = view->GetImageView();
|
||||
writeInfo.descImageInfos[i].sampler = sampler->GetVkSampler();
|
||||
writeInfo.descImageInfos[i].sampler = sampler ? sampler->GetVkSampler() : nullptr;
|
||||
writeInfo.descImageInfos[i].imageLayout = layout;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,16 +1,18 @@
|
|||
#include "SHPch.h"
|
||||
#include "SHVkDescriptorSetLayout.h"
|
||||
#include "Graphics/Devices/SHVkLogicalDevice.h"
|
||||
#include "Graphics/Images/SHVkSampler.h"
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
/* Constructor/Destructor */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
SHVkDescriptorSetLayout::SHVkDescriptorSetLayout(Handle<SHVkLogicalDevice> device, SetIndex set, const std::vector<Binding>& bindings)
|
||||
SHVkDescriptorSetLayout::SHVkDescriptorSetLayout(Handle<SHVkLogicalDevice> device, SetIndex set, const std::vector<Binding>& bindings, bool genImmutableSamplers/* = false*/)
|
||||
: device { device }
|
||||
, layoutDesc { bindings }
|
||||
, setIndex {set}
|
||||
, immutableSampler{}
|
||||
{
|
||||
// Check if auto-binding point calculation configuration is valid
|
||||
bool autoCalc = false;
|
||||
|
@ -26,6 +28,25 @@ namespace SHADE
|
|||
}
|
||||
}
|
||||
|
||||
vk::Sampler tempVkSampler = nullptr;
|
||||
if (genImmutableSamplers)
|
||||
{
|
||||
// Create sampler
|
||||
immutableSampler = device->CreateSampler(
|
||||
{
|
||||
.minFilter = vk::Filter::eLinear,
|
||||
.magFilter = vk::Filter::eLinear,
|
||||
.addressMode = vk::SamplerAddressMode::eRepeat,
|
||||
.mipmapMode = vk::SamplerMipmapMode::eLinear,
|
||||
.minLod = -1000,
|
||||
.maxLod = 1000
|
||||
}
|
||||
);
|
||||
|
||||
tempVkSampler = immutableSampler->GetVkSampler();
|
||||
}
|
||||
|
||||
|
||||
// Fill up VK bindings with auto calculated bind points if needed
|
||||
std::vector<vk::DescriptorSetLayoutBinding> layoutBindings;
|
||||
layoutBindings.reserve(bindings.size());
|
||||
|
@ -39,7 +60,7 @@ namespace SHADE
|
|||
.descriptorType = binding.Type,
|
||||
.descriptorCount = binding.DescriptorCount,
|
||||
.stageFlags = binding.Stage,
|
||||
.pImmutableSamplers = nullptr // We will create our own samplers
|
||||
.pImmutableSamplers = genImmutableSamplers ? &tempVkSampler : nullptr,
|
||||
};
|
||||
layoutBindings.emplace_back(VK_BINDING);
|
||||
|
||||
|
@ -75,7 +96,8 @@ namespace SHADE
|
|||
: device {rhs.device}
|
||||
, setLayout {rhs.setLayout}
|
||||
, layoutDesc{std::move (rhs.layoutDesc)}
|
||||
, setIndex {rhs.setIndex}
|
||||
, setIndex{ rhs.setIndex }
|
||||
, immutableSampler{ rhs.immutableSampler }
|
||||
{
|
||||
rhs.setLayout = VK_NULL_HANDLE;
|
||||
}
|
||||
|
@ -106,6 +128,7 @@ namespace SHADE
|
|||
setLayout = rhs.setLayout;
|
||||
layoutDesc = std::move(rhs.layoutDesc);
|
||||
setIndex = rhs.setIndex;
|
||||
immutableSampler = rhs.immutableSampler;
|
||||
|
||||
rhs.setLayout = VK_NULL_HANDLE;
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ namespace SHADE
|
|||
/* Forward Declarations */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
class SHVkLogicalDevice;
|
||||
class SHVkSampler;
|
||||
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
/* Type Definitions */
|
||||
|
@ -74,7 +75,7 @@ namespace SHADE
|
|||
/// </summary>
|
||||
/// <param name="device"></param>
|
||||
/// <param name="bindings"></param>
|
||||
SHVkDescriptorSetLayout(Handle<SHVkLogicalDevice> device, SetIndex setIndex, const std::vector<Binding>& bindings);
|
||||
SHVkDescriptorSetLayout(Handle<SHVkLogicalDevice> device, SetIndex setIndex, const std::vector<Binding>& bindings, bool genImmutableSamplers = false);
|
||||
SHVkDescriptorSetLayout(const SHVkDescriptorSetLayout&) = delete;
|
||||
SHVkDescriptorSetLayout(SHVkDescriptorSetLayout&& rhs) noexcept;
|
||||
/// <summary>
|
||||
|
@ -107,5 +108,6 @@ namespace SHADE
|
|||
vk::DescriptorSetLayout setLayout;
|
||||
std::vector<Binding> layoutDesc; // Stores description of the layout
|
||||
SetIndex setIndex; // Index of the set
|
||||
Handle<SHVkSampler> immutableSampler;
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue