18#ifndef INCLUDED_SHADERTECHNIQUE
19#define INCLUDED_SHADERTECHNIQUE
40 std::unique_ptr<Renderer::Backend::IGraphicsPipelineState> pipelineState,
67 void SetPasses(std::vector<CShaderPass>&& passes);
69 std::unique_ptr<Renderer::Backend::IComputePipelineState> pipelineState,
std::shared_ptr< CShaderProgram > CShaderProgramPtr
Definition: ShaderProgramPtr.h:26
Represents a mapping of name strings to value strings, for use with #if and #ifdef and similar condit...
Definition: ShaderDefines.h:147
Implements a render pass consisting of a pipeline state and a shader, used by CShaderTechnique.
Definition: ShaderTechnique.h:37
std::unique_ptr< Renderer::Backend::IGraphicsPipelineState > m_PipelineState
Definition: ShaderTechnique.h:52
CShaderProgramPtr m_Shader
Definition: ShaderTechnique.h:50
CShaderPass(std::unique_ptr< Renderer::Backend::IGraphicsPipelineState > pipelineState, const CShaderProgramPtr &shader)
Definition: ShaderTechnique.cpp:27
Renderer::Backend::IGraphicsPipelineState * GetPipelineState() const noexcept
Definition: ShaderTechnique.h:47
const CShaderProgramPtr & GetShaderProgram() const noexcept
Definition: ShaderTechnique.h:44
Implements a render technique consisting of a sequence of passes.
Definition: ShaderTechnique.h:60
void SetComputePipelineState(std::unique_ptr< Renderer::Backend::IComputePipelineState > pipelineState, const CShaderProgramPtr &computeShader)
Definition: ShaderTechnique.cpp:48
CShaderProgramPtr m_ComputeShader
Definition: ShaderTechnique.h:108
std::function< void(Renderer::Backend::SGraphicsPipelineStateDesc &pipelineStateDesc)> PipelineStateDescCallback
Definition: ShaderTechnique.h:63
std::vector< CShaderPass > m_Passes
Definition: ShaderTechnique.h:97
std::unique_ptr< Renderer::Backend::IComputePipelineState > m_ComputePipelineState
Definition: ShaderTechnique.h:107
CShaderDefines m_Defines
Definition: ShaderTechnique.h:103
const CShaderDefines & GetShaderDefines()
Definition: ShaderTechnique.h:92
CShaderTechnique(const VfsPath &path, const CShaderDefines &defines, const PipelineStateDescCallback &callback)
Definition: ShaderTechnique.cpp:35
VfsPath m_Path
Definition: ShaderTechnique.h:102
PipelineStateDescCallback m_PipelineStateDescCallback
Definition: ShaderTechnique.h:105
int GetNumPasses() const
Definition: ShaderTechnique.cpp:57
Renderer::Backend::IShaderProgram * GetShader(int pass=0) const
Definition: ShaderTechnique.cpp:62
Renderer::Backend::IComputePipelineState * GetComputePipelineState() const
Definition: ShaderTechnique.cpp:84
void SetSortByDistance(bool enable)
Definition: ShaderTechnique.cpp:94
bool m_SortByDistance
Definition: ShaderTechnique.h:99
const PipelineStateDescCallback & GetPipelineStateDescCallback() const
Definition: ShaderTechnique.h:94
void SetPasses(std::vector< CShaderPass > &&passes)
Definition: ShaderTechnique.cpp:42
Renderer::Backend::IGraphicsPipelineState * GetGraphicsPipelineState(int pass=0) const
Definition: ShaderTechnique.cpp:77
bool GetSortByDistance() const
Whether this technique uses alpha blending that requires objects to be drawn from furthest to nearest...
Definition: ShaderTechnique.cpp:89
const VfsPath & GetPath()
Definition: ShaderTechnique.h:90
A holder for precompiled compute pipeline description.
Definition: PipelineState.h:207
A holder for precompiled graphics pipeline description.
Definition: PipelineState.h:198
IShaderProgram is a container for multiple shaders of different types.
Definition: IShaderProgram.h:81
Definition: PipelineState.h:165