7#include <unordered_set>
10#include "shader/general/resource/binding/ShaderResourceBinding.h"
11#include "render/general/pipeline/PipelineShaderConstantsManager.hpp"
12#include "shader/general/resource/ShaderArrayIndexManager.h"
15#include "vulkan/vulkan.h"
86 Error error(std::format(
87 "shader resource \"{}\" was requested to set its push constant "
88 "index but this shader resource does not reference the specified pipeline",
97 it->second.iPushConstantIndex, it->second.pShaderArrayIndex->getActualIndex());
111 [[nodiscard]]
virtual std::optional<Error>
112 useNewTexture(std::unique_ptr<TextureHandle> pTextureToUse)
override;
130 [[nodiscard]]
virtual std::optional<Error>
146 const std::string& sResourceName,
147 std::unique_ptr<TextureHandle> pTextureToUse,
148 std::unordered_map<VulkanPipeline*, PushConstantIndices> pushConstantIndices);
172 static std::variant<std::unique_ptr<ShaderTextureResourceBinding>,
Error>
create(
174 const std::unordered_set<Pipeline*>& pipelinesToUse,
175 std::unique_ptr<TextureHandle> pTextureToUse);
204 unsigned int iIndexIntoShaderArray);
210 std::pair<std::recursive_mutex, std::unordered_map<VulkanPipeline*, PushConstantIndices>>
std::string getFullErrorMessage() const
Definition: Error.cpp:84
void showError() const
Definition: Error.cpp:102
Definition: GlslShaderTextureResourceBinding.h:24
std::string getPathToTextureResource()
Definition: GlslShaderTextureResourceBinding.cpp:224
void copyResourceIndexToPushConstants(PipelineShaderConstantsManager *pPushConstantsManager, VulkanPipeline *pUsedPipeline)
Definition: GlslShaderTextureResourceBinding.h:78
static std::variant< std::unique_ptr< ShaderTextureResourceBinding >, Error > create(const std::string &sShaderResourceName, const std::unordered_set< Pipeline * > &pipelinesToUse, std::unique_ptr< TextureHandle > pTextureToUse)
Definition: GlslShaderTextureResourceBinding.cpp:16
virtual std::optional< Error > changeUsedPipelines(const std::unordered_set< Pipeline * > &pipelinesToUse) override
Definition: GlslShaderTextureResourceBinding.cpp:259
static std::optional< Error > bindTextureToShaderDescriptorArray(const std::string &sShaderResourceName, VulkanPipeline *pPipelineWithDescriptors, VulkanResource *pTexture, unsigned int iIndexIntoShaderArray)
Definition: GlslShaderTextureResourceBinding.cpp:121
std::pair< std::recursive_mutex, std::unordered_map< VulkanPipeline *, PushConstantIndices > > mtxPushConstantIndices
Definition: GlslShaderTextureResourceBinding.h:211
virtual std::optional< Error > onAfterAllPipelinesRefreshedResources() override
Definition: GlslShaderTextureResourceBinding.cpp:182
std::pair< std::mutex, std::unique_ptr< TextureHandle > > mtxUsedTexture
Definition: GlslShaderTextureResourceBinding.h:207
virtual std::optional< Error > useNewTexture(std::unique_ptr< TextureHandle > pTextureToUse) override
Definition: GlslShaderTextureResourceBinding.cpp:231
static std::variant< std::unique_ptr< ShaderArrayIndex >, Error > getTextureIndexInShaderArray(const std::string &sShaderResourceName, VulkanPipeline *pPipelineToLookIn)
Definition: GlslShaderTextureResourceBinding.cpp:92
Definition: PipelineShaderConstantsManager.hpp:14
void copyValueToShaderConstant(size_t iShaderConstantIndex, unsigned int iValueToCopy)
Definition: PipelineShaderConstantsManager.hpp:75
std::string getShaderResourceName() const
Definition: ShaderResourceBinding.cpp:11
const std::string sShaderResourceName
Definition: ShaderResourceBinding.h:82
Definition: ShaderTextureResourceBindingManager.h:27
Definition: ShaderResourceBinding.h:86
Definition: VulkanPipeline.h:21
Definition: VulkanResource.h:24
Definition: GlslShaderTextureResourceBinding.h:29
size_t iPushConstantIndex
Definition: GlslShaderTextureResourceBinding.h:56
PushConstantIndices(PushConstantIndices &&)=default
PushConstantIndices & operator=(PushConstantIndices &&)=default
PushConstantIndices()=default
std::unique_ptr< ShaderArrayIndex > pShaderArrayIndex
Definition: GlslShaderTextureResourceBinding.h:59
PushConstantIndices(size_t iPushConstantIndex, std::unique_ptr< ShaderArrayIndex > pShaderArrayIndex)
Definition: GlslShaderTextureResourceBinding.h:39