|
Nameless Engine
|
#include <DirectXPso.h>
Classes | |
| struct | InternalResources |
Public Member Functions | |
| DirectXPso (const DirectXPso &)=delete | |
| DirectXPso & | operator= (const DirectXPso &)=delete |
| std::variant< unsigned int, Error > | getRootParameterIndex (const std::string &sShaderResourceName) |
| std::pair< std::recursive_mutex, InternalResources > * | getInternalResources () |
Public Member Functions inherited from ne::Pipeline | |
| Pipeline (const Pipeline &)=delete | |
| Pipeline & | operator= (const Pipeline &)=delete |
| std::variant< size_t, Error > | getUintConstantOffset (const std::string &sConstantName) |
| std::pair< std::mutex, std::unordered_set< Material * > > * | getMaterialsThatUseThisPipeline () |
| std::string | getPipelineIdentifier () const |
| Renderer * | getRenderer () const |
| const PipelineConfiguration * | getConfiguration () const |
| std::pair< std::mutex, std::optional< ShaderConstantsData > > * | getShaderConstants () |
Public Member Functions inherited from ne::ShaderUser | |
| 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< PipelineConfiguration > pPipelineConfiguration) |
| static std::variant< std::shared_ptr< DirectXPso >, Error > | createComputePso (Renderer *pRenderer, PipelineManager *pPipelineManager, const std::string &sComputeShaderName) |
Static Public Member Functions inherited from ne::Pipeline | |
| static std::string | combineShaderNames (std::string_view sVertexShaderName, std::string_view sPixelShaderName, std::string_view sComputeShaderName="") |
Protected Member Functions | |
| virtual std::optional< Error > | recreateInternalResources () override |
Protected Member Functions inherited from ne::Pipeline | |
| Pipeline (Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration) | |
| virtual std::optional< Error > | recreateInternalResources ()=0 |
| void | setShaderConstants (const std::unordered_map< std::string, size_t > &uintConstantsOffsets) |
Protected Member Functions inherited from ne::ShaderUser | |
| ShaderUser (ShaderManager *pShaderManager) | |
| virtual | ~ShaderUser () |
| bool | addShader (const std::string &sShaderName) |
| ShaderPack * | findShader (ShaderType shaderType) |
Private Member Functions | |
| DirectXPso (Renderer *pRenderer, PipelineManager *pPipelineManager, std::unique_ptr< PipelineConfiguration > pPipelineConfiguration) | |
| void | bindGlobalShaderResourceViews (const ComPtr< ID3D12GraphicsCommandList > &pCommandList, size_t iCurrentFrameResourceIndex) const |
| std::optional< Error > | generateGraphicsPso () |
| std::optional< Error > | generateComputePso () |
Private Attributes | |
| std::pair< std::recursive_mutex, InternalResources > | mtxInternalResources |
Friends | |
| class | DirectXRenderer |
DirectX pipeline state object (PSO) wrapper.
|
explicitprivate |
Constructs uninitialized pipeline.
| pRenderer | Used renderer. |
| pPipelineManager | Pipeline manager that owns this PSO. |
| pPipelineConfiguration | Settings and usage details. |
|
inlineprivate |
Sets views of global shader resource bindings.
| pCommandList | Command list to set views to. |
| iCurrentFrameResourceIndex | Index of the frame resource that is currently being used to submit a new frame. |
|
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. |
| pPipelineConfiguration | 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.
| std::variant< unsigned int, Error > ne::DirectXPso::getRootParameterIndex | ( | const std::string & | sShaderResourceName | ) |
|
overrideprotectedvirtual |
Releases all internal resources from this graphics pipeline and then recreates them to reference new resources/parameters from the renderer.
Implements ne::Pipeline.
|
private |
Internal resources. Must be used with mutex when changing.