FCT
载入中...
搜索中...
未找到
Pass.h
浏览该文件的文档.
1#ifndef FCT_RHI_PASS_H
2#define FCT_RHI_PASS_H
3#include "../Base/Flags.h"
6#include "../Context/Image.h"
8namespace FCT
9{
11 {
12 ClearTypes types;
14 float depth;
15 uint8_t stencil;
16 };
17 namespace RHI
18 {
19 class CommandBuffer;
20 class PassGroup;
21 class Pass : public RefCount
22 {
23 public:
24 static constexpr Pass* external = nullptr;
25 static constexpr Pass* present = reinterpret_cast<Pass*>(-1);
26 static constexpr Pass* begin = reinterpret_cast<Pass*>(-1);;
28 {
29 m_group = nullptr;
30 m_depthStencil = nullptr;
31 }
32 void bindTarget(uint32_t index, FCT::Image* target)
33 {
34 m_renderTargets[index] = target;
35 }
36 void bindTexture(uint32_t index, FCT::Image* texture)
37 {
38 m_textures[index] = texture;
39 }
45 {
46 return m_depthStencil;
47 }
48 virtual void create(PassGroup* group) = 0;//由PassGroup 调用
49 void enableClear(ClearTypes type,Vec4 color,float depth = 1.0f, uint8_t stencil = 0)
50 {
51 m_clearValue.types = type;
52 m_clearValue.color = color;
53 m_clearValue.depth = depth;
54 m_clearValue.stencil = stencil;
55 }
56 void enableClear(PassClearValue clearValue)
57 {
58 m_clearValue = clearValue;
59 }
60 auto passGroup() const
61 {
62 return m_group;
63 }
64 virtual void executeClear(CommandBuffer* cmdBuf) = 0;
66 {
67 return m_renderTargets;
68 }
69 virtual void beginSubmit(CommandBuffer* cmdBuf) = 0;
70 virtual void endSubmit() = 0;
71 uint32_t index() const
72 {
73 return m_index;
74 }
75 void index(uint32_t index)
76 {
77 m_index = index;
78 }
80 {
81 return m_group;
82 }
83 protected:
86 uint32_t m_index;
87 //傻逼Vulkan,这tm也要自己写
88 std::map<uint32_t,FCT::Image*> m_renderTargets;
89 std::map<uint32_t,FCT::Image*> m_textures;
91 };
92 }
93}
94#endif //FCT_RHI_PASS_H
virtual void endSubmit()=0
void depthStencil(FCT::Image *depthStencil)
定义 Pass.h:40
PassClearValue m_clearValue
定义 Pass.h:90
std::map< uint32_t, FCT::Image * > m_textures
定义 Pass.h:89
void enableClear(PassClearValue clearValue)
定义 Pass.h:56
auto & renderTargets()
定义 Pass.h:65
static constexpr Pass * present
定义 Pass.h:25
FCT::Image * depthStencil() const
定义 Pass.h:44
std::map< uint32_t, FCT::Image * > m_renderTargets
定义 Pass.h:88
auto passGroup() const
定义 Pass.h:60
void bindTexture(uint32_t index, FCT::Image *texture)
定义 Pass.h:36
static constexpr Pass * external
定义 Pass.h:24
static constexpr Pass * begin
定义 Pass.h:26
uint32_t index() const
定义 Pass.h:71
virtual void executeClear(CommandBuffer *cmdBuf)=0
FCT::Image * m_depthStencil
定义 Pass.h:84
uint32_t m_index
定义 Pass.h:86
void enableClear(ClearTypes type, Vec4 color, float depth=1.0f, uint8_t stencil=0)
定义 Pass.h:49
void index(uint32_t index)
定义 Pass.h:75
PassGroup * m_group
定义 Pass.h:85
PassGroup * group() const
定义 Pass.h:79
void bindTarget(uint32_t index, FCT::Image *target)
定义 Pass.h:32
virtual void create(PassGroup *group)=0
virtual void beginSubmit(CommandBuffer *cmdBuf)=0