5#include <unordered_set>
8#include "shader/general/ShaderUser.h"
9#include "render/general/pipeline/PipelineCreationSettings.h"
10#include "render/general/pipeline/PipelineShaderConstantsManager.hpp"
14 class PipelineManager;
16 class ComputeShaderInterface;
52 Pipeline* pPipeline,
const char* pConstantName,
unsigned int iValueToCopy);
205 bool bUsePixelBlending =
false);
249 void setShaderConstants(
const std::unordered_map<std::string, size_t>& uintConstantsOffsets);
266 std::unique_ptr<PipelineCreationSettings> pPipelineCreationSettings);
338 std::pair<std::mutex, std::unordered_set<ComputeShaderInterface*>>
Definition: ComputeShaderInterface.h:46
Definition: Material.h:84
Definition: PipelineManager.h:89
Definition: PipelineSharedPtr.h:15
Definition: Pipeline.h:20
Renderer * pRenderer
Definition: Pipeline.h:367
std::pair< std::mutex, std::optional< ShaderConstantsData > > mtxShaderConstantsData
Definition: Pipeline.h:342
std::set< ShaderMacro > getAdditionalPixelShaderMacros() const
Definition: Pipeline.cpp:194
std::string getPixelShaderName()
Definition: Pipeline.cpp:76
std::pair< std::mutex, std::optional< ShaderConstantsData > > * getShaderConstants()
Definition: Pipeline.cpp:198
void onMaterialUsingPipeline(Material *pMaterial)
Definition: Pipeline.cpp:202
std::string getPipelineIdentifier() const
Definition: Pipeline.cpp:183
std::set< ShaderMacro > getAdditionalVertexShaderMacros() const
Definition: Pipeline.cpp:190
std::set< ShaderMacro > additionalVertexShaderMacros
Definition: Pipeline.h:350
const std::string sVertexShaderName
Definition: Pipeline.h:370
std::pair< std::mutex, std::unordered_set< Material * > > mtxMaterialsThatUseThisPipeline
Definition: Pipeline.h:331
bool isUsingPixelBlending() const
Definition: Pipeline.cpp:89
const std::string sComputeShaderName
Definition: Pipeline.h:376
virtual std::optional< Error > releaseInternalResources()=0
void onMaterialNoLongerUsingPipeline(Material *pMaterial)
Definition: Pipeline.cpp:222
bool bIsUsingPixelBlending
Definition: Pipeline.h:379
bool bEnableDepthBias
Definition: Pipeline.h:382
virtual std::optional< Error > restoreInternalResources()=0
static std::variant< std::shared_ptr< Pipeline >, Error > createComputePipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName)
Definition: Pipeline.cpp:146
std::unordered_map< ShaderType, std::set< ShaderMacro > > usedShaderConfiguration
Definition: Pipeline.h:361
std::set< ShaderMacro > additionalPixelShaderMacros
Definition: Pipeline.h:358
PipelineManager * pPipelineManager
Definition: Pipeline.h:364
std::pair< std::mutex, std::unordered_set< Material * > > * getMaterialsThatUseThisPipeline()
Definition: Pipeline.cpp:95
void saveUsedShaderConfiguration(ShaderType shaderType, std::set< ShaderMacro > &&fullConfiguration)
Definition: Pipeline.cpp:42
std::string getComputeShaderName()
Definition: Pipeline.cpp:78
void setShaderConstants(const std::unordered_map< std::string, size_t > &uintConstantsOffsets)
Definition: Pipeline.cpp:46
bool isDepthBiasEnabled() const
Definition: Pipeline.cpp:91
void onComputeShaderNoLongerUsingPipeline(ComputeShaderInterface *pComputeShaderInterface)
Definition: Pipeline.cpp:267
std::string getVertexShaderName()
Definition: Pipeline.cpp:74
const std::string sPixelShaderName
Definition: Pipeline.h:373
std::optional< std::set< ShaderMacro > > getCurrentShaderConfiguration(ShaderType shaderType)
Definition: Pipeline.cpp:80
Renderer * getRenderer() const
Definition: Pipeline.cpp:292
bool bIsUsedForPointLightsShadowMapping
Definition: Pipeline.h:385
static std::string combineShaderNames(const std::string &sVertexShaderName, const std::string &sPixelShaderName)
Definition: Pipeline.cpp:66
static std::variant< std::shared_ptr< Pipeline >, Error > createGraphicsPipeline(Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineCreationSettings > pPipelineCreationSettings)
Definition: Pipeline.cpp:99
void onComputeShaderUsingPipeline(ComputeShaderInterface *pComputeShaderInterface)
Definition: Pipeline.cpp:248
bool isUsedForPointLightsShadowMapping() const
Definition: Pipeline.cpp:93
std::pair< std::mutex, std::unordered_set< ComputeShaderInterface * > > mtxComputeShadersThatUseThisPipeline
Definition: Pipeline.h:339
Definition: Renderer.h:39
Definition: ShaderUser.h:20
Definition: Pipeline.h:35
void findOffsetAndCopySpecialValueToConstant(Pipeline *pPipeline, const char *pConstantName, unsigned int iValueToCopy)
Definition: Pipeline.cpp:294
std::unordered_map< std::string, size_t > uintConstantsOffsets
Definition: Pipeline.h:61
std::unique_ptr< PipelineShaderConstantsManager > pConstantsManager
Definition: Pipeline.h:55