diff options
Diffstat (limited to 'demo/d3d12/pointRenderPipelineD3D12.h')
| -rw-r--r-- | demo/d3d12/pointRenderPipelineD3D12.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/demo/d3d12/pointRenderPipelineD3D12.h b/demo/d3d12/pointRenderPipelineD3D12.h new file mode 100644 index 0000000..cdd03bc --- /dev/null +++ b/demo/d3d12/pointRenderPipelineD3D12.h @@ -0,0 +1,60 @@ +/* +* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, related documentation +* and any modifications thereto. Any use, reproduction, disclosure or +* distribution of this software and related documentation without an express +* license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#ifndef POINT_RENDER_PIPELINE_D3D12_H +#define POINT_RENDER_PIPELINE_D3D12_H + +#include <DirectXMath.h> +#include "renderStateD3D12.h" +#include "meshRenderer.h" + +#include <NvCoDx12RenderTarget.h> + +#include "../d3d/renderParamsD3D.h" + +namespace FlexSample { +using namespace nvidia; + +struct PointRenderPipelineD3D12: public RenderPipeline +{ + //NV_CO_DECLARE_POLYMORPHIC_CLASS(PointRenderPipelineD3D12, RenderPipeline); +public: + typedef RenderPipeline Parent; + + enum PipelineStateType + { + PIPELINE_STATE_SHADOW, + PIPELINE_STATE_LIGHT_SOLID, + PIPELINE_STATE_COUNT_OF, + }; + + PointRenderPipelineD3D12(); + + /// Initialize + int initialize(const RenderStateD3D12& state, const std::wstring& shadersDir, int shadowMapLinearSamplerIndex, NvCo::Dx12RenderTarget* shadowMap); + /// Do the binding + virtual int bind(const void* paramsIn, const void* platformState) override; + virtual int draw(const RenderAllocation& alloc, size_t sizeOfAlloc, const void* platformState) override; + + /// Convert into a single pipeline state type + static PipelineStateType getPipelineStateType(PointDrawStage stage, PointRenderMode mode, PointCullMode cull); + + protected: + + int _initPipelineState(const RenderStateD3D12& state, NvCo::Dx12RenderTarget* shadowMap, PipelineStateType pipeType, ID3D12RootSignature* signiture, D3D12_GRAPHICS_PIPELINE_STATE_DESC& psoDesc); + + int m_shadowMapLinearSamplerIndex; //< The index to the linear sampler in the m_samplerHeap + + PipelineStateD3D12 m_states[PIPELINE_STATE_COUNT_OF]; +}; + +} // namespace FlexSample + +#endif
\ No newline at end of file |