11#include "../Thirdparty/thirdparty.h"
23 using TechBindCallback = std::function<void(FCT::Layout* layout,
const std::string& techName,
const std::string& passName)>;
75 template<
typename... Components>
82 template<
typename... Components>
97 template<
typename... Args>
155 template<
typename... Args>
158 template<
typename... Args>
161 template<
typename... Args>
164 template<
typename... Args>
165 void processArgs(
const FCT::VertexLayout& layout, Args... args);
167 template<
typename... Args>
168 void processArgs(
const std::vector<FCT::VertexLayout>& layouts, Args... args);
170 template<
typename... Args>
171 void processArgs(
const FCT::PixelLayout& layout, Args... args);
173 template<
typename... Args>
174 void processArgs(
const FCT::UniformSlot& slot, Args... args);
176 template<
typename... Args>
177 void processArgs(
const std::vector<FCT::UniformSlot>& slots, Args... args);
179 template<
typename... Args>
180 void processArgs(
const FCT::SamplerSlot& slot, Args... args);
182 template<
typename... Args>
183 void processArgs(
const std::vector<FCT::SamplerSlot>& slots, Args... args);
185 template<
typename... Args>
186 void processArgs(
const FCT::TextureSlot& slot, Args... args);
188 template<
typename... Args>
189 void processArgs(
const std::vector<FCT::TextureSlot>& slots, Args... args);
191 template<
typename... Args>
194 template<
typename... Args>
197 template<
typename... Args>
222 void addTech(
const std::string& passName,
Tech&& tech);
224 const std::vector<Tech*>&
getTechsForPass(
const std::string& passName);
256 std::map<LayoutKey, std::unique_ptr<FCT::Layout>>
m_layouts;
const ShaderRef & getPixelShaderRef() const
定义 Tech.h:116
std::string m_vs_source
定义 Tech.h:202
std::vector< FCT::UniformSlot > m_uniformSlots
定义 Tech.h:206
Tech(Args... args)
定义 Tech.hpp:8
const std::vector< FCT::UniformSlot > & getUniformSlots() const
定义 Tech.h:111
ShaderRef m_vs_ref
定义 Tech.h:209
const std::vector< FCT::TextureSlot > & getTextureSlots() const
定义 Tech.h:113
const std::vector< FCT::SamplerSlot > & getSamplerSlots() const
定义 Tech.h:112
EntityOperationCallback m_entityOperationCallback
定义 Tech.h:214
void setBindCallback(const TechBindCallback &callback)
定义 Tech.h:137
void setVertexShaderRef(const ShaderRef &ref)
定义 Tech.h:135
void setPassName(const std::string &passName)
定义 Tech.h:134
std::string m_name
定义 Tech.h:201
std::string m_passName
定义 Tech.h:211
const FCT::PixelLayout & getPixelLayout() const
定义 Tech.h:110
std::vector< FCT::TextureSlot > m_textureSlots
定义 Tech.h:208
void executeBindCallback(FCT::Layout *layout) const
定义 Tech.h:144
TechBindCallback m_bindCallback
定义 Tech.h:213
const std::string & getPassName() const
定义 Tech.h:114
void executeEntityOperationCallback(entt::registry ®istry, entt::entity entity, FCT::Layout *layout, FCT::RHI::CommandBuffer *cmdBuf) const
定义 Tech.h:123
std::string m_ps_source
定义 Tech.h:203
ShaderRef m_ps_ref
定义 Tech.h:210
std::vector< FCT::VertexLayout > m_vertexLayouts
定义 Tech.h:204
const std::string & getPixelShaderSource() const
定义 Tech.h:108
const ShaderRef & getVertexShaderRef() const
定义 Tech.h:115
const std::vector< FCT::VertexLayout > & getVertexLayouts() const
定义 Tech.h:109
FCT::PixelLayout m_pixelLayout
定义 Tech.h:205
void processArgs()
定义 Tech.h:153
ComponentFilter m_componentFilter
定义 Tech.h:212
void setEntityOperationCallback(const EntityOperationCallback &callback)
定义 Tech.h:138
const std::string & getName() const
定义 Tech.h:106
std::vector< FCT::SamplerSlot > m_samplerSlots
定义 Tech.h:207
const std::string & getVertexShaderSource() const
定义 Tech.h:107
const ComponentFilter & getComponentFilter() const
定义 Tech.h:117
void setPixelShaderRef(const ShaderRef &ref)
定义 Tech.h:136
void subscribeToPass(const std::string &passName)
为指定Pass订阅渲染事件和PassInfo更新
定义 Tech.cpp:100
std::map< std::string, FCT::Layout * > m_techToLayoutMap
定义 Tech.h:257
FCT::Layout * getLayoutForTech(const std::string &techName)
定义 Tech.cpp:44
DataManager * m_dataManager
定义 Tech.h:260
std::map< std::string, Tech > m_techs
定义 Tech.h:254
TechManager()
定义 Tech.cpp:13
const std::vector< Tech * > & getTechsForPass(const std::string &passName)
定义 Tech.cpp:33
std::map< std::string, std::vector< Tech * > > m_passTechs
定义 Tech.h:255
std::map< std::string, FCT::OutputInfo > m_passOutputInfos
定义 Tech.h:259
std::map< LayoutKey, std::unique_ptr< FCT::Layout > > m_layouts
定义 Tech.h:256
std::set< std::string > m_subscribedPasses
定义 Tech.h:258
Context * m_ctx
定义 Tech.h:253
void addTech(const std::string &passName, Tech &&tech)
定义 Tech.cpp:19
FCT::Context Context
定义 EngineGlobal.h:14
std::function< void(const EntityRenderContext &context)> EntityOperationCallback
实体操作回调函数类型
定义 Tech.h:41
FCT::ShaderRef ShaderRef
定义 thirdparty.h:28
std::function< void(FCT::Layout *layout, const std::string &techName, const std::string &passName)> TechBindCallback
Tech绑定回调函数类型
定义 Tech.h:23
定义组件过滤器,用于runtime view
定义 Tech.h:71
std::vector< entt::type_info > exclude_types
定义 Tech.h:73
std::vector< entt::type_info > include_types
定义 Tech.h:72
ComponentFilter & include()
定义 Tech.h:76
ComponentFilter & exclude()
定义 Tech.h:83
FCT::Layout * layout
定义 Tech.h:31
const std::string & passName
定义 Tech.h:34
const std::string & techName
定义 Tech.h:33
FCT::RHI::CommandBuffer * cmdBuf
定义 Tech.h:32
entt::registry & registry
定义 Tech.h:29
entt::entity entity
定义 Tech.h:30
std::string source
定义 Tech.h:64
bool operator<(const LayoutKey &other) const
定义 Tech.h:243
std::string passName
定义 Tech.h:239
size_t vertexLayoutHash
定义 Tech.h:240
size_t pixelLayoutHash
定义 Tech.h:241
std::string name
定义 Tech.h:48
std::string source
定义 Tech.h:56