Nameless Engine
|
#include <DirectXPso.h>
Classes | |
struct | InternalResources |
Public Member Functions | |
DirectXPso (const DirectXPso &)=delete | |
DirectXPso & | operator= (const DirectXPso &)=delete |
std::pair< std::recursive_mutex, InternalResources > * | getInternalResources () |
![]() | |
Pipeline (const Pipeline &)=delete | |
Pipeline & | operator= (const Pipeline &)=delete |
std::string | getVertexShaderName () |
std::string | getPixelShaderName () |
std::string | getComputeShaderName () |
std::optional< std::set< ShaderMacro > > | getCurrentShaderConfiguration (ShaderType shaderType) |
bool | isUsingPixelBlending () const |
bool | isDepthBiasEnabled () const |
bool | isUsedForPointLightsShadowMapping () const |
std::pair< std::mutex, std::unordered_set< Material * > > * | getMaterialsThatUseThisPipeline () |
std::string | getPipelineIdentifier () const |
Renderer * | getRenderer () const |
std::set< ShaderMacro > | getAdditionalVertexShaderMacros () const |
std::set< ShaderMacro > | getAdditionalPixelShaderMacros () const |
std::pair< std::mutex, std::optional< ShaderConstantsData > > * | getShaderConstants () |
![]() | |
ShaderUser (const ShaderUser &)=delete | |
ShaderUser & | operator= (const ShaderUser &)=delete |
Static Public Member Functions | |
static std::variant< std::shared_ptr< DirectXPso >, Error > | createGraphicsPso (Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineCreationSettings > pPipelineCreationSettings) |
static std::variant< std::shared_ptr< DirectXPso >, Error > | createComputePso (Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName) |
![]() | |
static std::string | combineShaderNames (const std::string &sVertexShaderName, const std::string &sPixelShaderName) |
Protected Member Functions | |
virtual std::optional< Error > | releaseInternalResources () override |
virtual std::optional< Error > | restoreInternalResources () override |
![]() | |
Pipeline (Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sVertexShaderName, const std::set< ShaderMacro > &additionalVertexShaderMacros, const std::string &sPixelShaderName="", const std::set< ShaderMacro > &additionalPixelShaderMacros={}, const std::string &sComputeShaderName="", bool bEnableDepthBias=false, bool bIsUsedForPointLightsShadowMapping=false, bool bUsePixelBlending=false) | |
void | saveUsedShaderConfiguration (ShaderType shaderType, std::set< ShaderMacro > &&fullConfiguration) |
virtual std::optional< Error > | releaseInternalResources ()=0 |
virtual std::optional< Error > | restoreInternalResources ()=0 |
void | setShaderConstants (const std::unordered_map< std::string, size_t > &uintConstantsOffsets) |
![]() | |
ShaderUser (ShaderManager *pShaderManager) | |
virtual | ~ShaderUser () |
bool | addShader (const std::string &sShaderName) |
std::optional< ShaderPack * > | getShader (ShaderType shaderType) |
Private Member Functions | |
DirectXPso (Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sVertexShaderName, const std::set< ShaderMacro > &additionalVertexShaderMacros, const std::string &sPixelShaderName, const std::set< ShaderMacro > &additionalPixelShaderMacros={}, const std::string &sComputeShaderName="", bool bEnableDepthBias=false, bool bIsUsedForPointLightsShadowMapping=false, bool bUsePixelBlending=false) | |
std::optional< Error > | generateGraphicsPso () |
std::optional< Error > | generateComputePso () |
Private Attributes | |
std::pair< std::recursive_mutex, InternalResources > | mtxInternalResources |
DirectX pipeline state object (PSO) wrapper.
|
explicitprivate |
Constructs uninitialized pipeline.
pRenderer | Used renderer. |
pPipelineManager | Pipeline manager that owns this PSO. |
sVertexShaderName | Name of the compiled vertex shader to use (empty if not used). |
additionalVertexShaderMacros | Additional macros to enable for vertex shader configuration. |
sPixelShaderName | Name of the compiled pixel shader to use (empty if not used). |
additionalPixelShaderMacros | Additional macros to enable for pixel shader configuration. |
sComputeShaderName | Name of the compiled compute shader to use (empty if not used). |
bEnableDepthBias | Whether depth bias (offset) is enabled or not. |
bIsUsedForPointLightsShadowMapping | Whether this pipeline is used for shadow mapping of point lights or not. |
bUsePixelBlending | Whether the pixels of the mesh that uses this PSO should blend with existing pixels on back buffer or not (for transparency). |
|
static |
Assigns compute shader to create a compute PSO.
pRenderer | Used renderer. |
pPipelineManager | Pipeline manager that owns this PSO. |
sComputeShaderName | Name of the compiled compute shader (see ShaderManager::compileShaders). |
|
static |
Assigns vertex and pixel shaders to create a graphics PSO (for usual rendering).
pRenderer | Used renderer. |
pPipelineManager | Pipeline manager that owns this PSO. |
pPipelineCreationSettings | Settings that determine pipeline usage and usage details. |
|
private |
(Re)generates DirectX compute pipeline state object.
|
private |
(Re)generates DirectX graphics pipeline state object.
|
inline |
Returns internal resources that this PSO uses.
|
overrideprotectedvirtual |
Releases internal resources such as root signature, internal PSO, etc.
Implements ne::Pipeline.
|
overrideprotectedvirtual |
Creates internal resources using the current shader configuration.
Implements ne::Pipeline.
|
private |
Internal resources. Must be used with mutex when changing.