HatchitGraphics
ht_d3d12pipeline.h
1 
16 #pragma once
17 
18 #include <ht_platform.h>
19 #include <ht_pipeline_base.h>
20 #include <ht_pipeline_resource.h>
21 #include <ht_shader.h>
22 #include <ht_shadervariablechunk.h>
23 #include <ht_directx.h>
24 #include <ht_d3d12shader.h>
25 #include <ht_refcounted.h>
26 
27 namespace Hatchit {
28 
29  namespace Graphics {
30 
31  namespace DX
32  {
33  class HT_API D3D12Pipeline : public PipelineBase
34  {
35  public:
36  D3D12Pipeline();
37 
38  ~D3D12Pipeline();
39 
40  ID3D12PipelineState* GetPipeline();
41 
42  bool Initialize(Resource::PipelineHandle handle, ID3D12Device* device);
43 
44  virtual bool VInitialize(const Resource::PipelineHandle handle);
45  virtual bool VUpdate() override;
46 
47  virtual bool VSetShaderVariables(ShaderVariableChunk* variables) override;
48 
49  virtual bool VSetInt(size_t offset, int data) override;
50  virtual bool VSetDouble(size_t offset, double data) override;
51  virtual bool VSetFloat(size_t offset, float data) override;
52  virtual bool VSetFloat2(size_t offset, Math::Vector2 data) override;
53  virtual bool VSetFloat3(size_t offset, Math::Vector3 data) override;
54  virtual bool VSetFloat4(size_t offset, Math::Vector4 data) override;
55  virtual bool VSetMatrix4(size_t offset, Math::Matrix4 data) override;
56 
57  private:
58  D3D12_GRAPHICS_PIPELINE_STATE_DESC m_description;
59  ID3D12PipelineState* m_pipelineState;
60 
61  std::map<Resource::Pipeline::ShaderSlot, ShaderHandle> m_shaders;
62 
63  D3D12_RASTERIZER_DESC RasterDescFromHandle(const Resource::PipelineHandle& handle);
64  D3D12_SHADER_BYTECODE ShaderBytecodeFromHandle(Resource::Pipeline::ShaderSlot slot, const Resource::PipelineHandle& handle);
65  D3D12_INPUT_LAYOUT_DESC InputLayoutDescFromHandle(const Resource::PipelineHandle& handle);
66  DXGI_FORMAT InputFormatFromElement(const Resource::ShaderVariable::Type& element);
67  };
68 
69  }
70  }
71 }
Hatchit Engine Copyright(c) 2015-2016 Third-Degree.
Definition: ht_color.h:19
Definition: ht_pipeline_base.h:39
Definition: ht_shadervariablechunk.h:38
Definition: ht_d3d12pipeline.h:33