created RenderTargetManager they are codes from TextureManager
This commit is contained in:
parent
2516e9cfc1
commit
c7ae16b2c8
2
CMCore
2
CMCore
@ -1 +1 @@
|
|||||||
Subproject commit ea101386d3705ee56b7a457b5b828c9f7894487d
|
Subproject commit dbbd145f03cd3d56c8535b9291b710e595d3b625
|
@ -1 +1 @@
|
|||||||
Subproject commit 441ca9ce5558d6825c92c7dd1b9f93b80404fb41
|
Subproject commit b2f29ef0cfaed232226f5c8460b1694b98fc25bd
|
2
CMUtil
2
CMUtil
@ -1 +1 @@
|
|||||||
Subproject commit 6582b635c9b93284c29dd7e1bc6dc5ecf59a8705
|
Subproject commit 5a05612f537391db5cbf4001b93ecbef591e4c2e
|
@ -26,7 +26,7 @@ private:
|
|||||||
GRAPH_MODULE_CONSTRUCT(RenderPassManager)
|
GRAPH_MODULE_CONSTRUCT(RenderPassManager)
|
||||||
~RenderPassManager();
|
~RenderPassManager();
|
||||||
|
|
||||||
bool Init(GraphModulesMap *) override;
|
bool Init() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
27
inc/hgl/graph/manager/RenderTargetManager.h
Normal file
27
inc/hgl/graph/manager/RenderTargetManager.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include<hgl/graph/module/GraphModule.h>
|
||||||
|
|
||||||
|
VK_NAMESPACE_BEGIN
|
||||||
|
|
||||||
|
class RenderTargetManager:public GraphModule
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
GRAPH_MODULE_CONSTRUCT(RenderTargetManager)
|
||||||
|
virtual ~RenderTargetManager();
|
||||||
|
|
||||||
|
public: //FrameBuffer相关
|
||||||
|
|
||||||
|
Framebuffer *CreateFBO(RenderPass *rp,ImageView **color_list,const uint image_count,ImageView *depth);
|
||||||
|
// Framebuffer *CreateFBO(RenderPass *,List<ImageView *> &color,ImageView *depth);
|
||||||
|
Framebuffer *CreateFBO(RenderPass *,ImageView *color,ImageView *depth);
|
||||||
|
Framebuffer *CreateFBO(RenderPass *,ImageView *);
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
RenderTarget *CreateRT( const FramebufferInfo *fbi,RenderPass *,const uint32_t fence_count=1);
|
||||||
|
RenderTarget *CreateRT( const FramebufferInfo *fbi,const uint32_t fence_count=1);
|
||||||
|
};//class RenderTargetManager
|
||||||
|
|
||||||
|
VK_NAMESPACE_END
|
@ -12,8 +12,6 @@ VK_NAMESPACE_BEGIN
|
|||||||
|
|
||||||
class TextureManager:public GraphModule
|
class TextureManager:public GraphModule
|
||||||
{
|
{
|
||||||
RenderPassManager *rp_manager=nullptr;
|
|
||||||
|
|
||||||
DeviceQueue *texture_queue=nullptr;
|
DeviceQueue *texture_queue=nullptr;
|
||||||
TextureCmdBuffer *texture_cmd_buf=nullptr;
|
TextureCmdBuffer *texture_cmd_buf=nullptr;
|
||||||
|
|
||||||
@ -126,18 +124,5 @@ public: // Load
|
|||||||
|
|
||||||
Texture2DArray * CreateTexture2DArray(const AnsiString &name,const uint32_t width,const uint32_t height,const uint32_t layer,const VkFormat &fmt,bool auto_mipmaps=false);
|
Texture2DArray * CreateTexture2DArray(const AnsiString &name,const uint32_t width,const uint32_t height,const uint32_t layer,const VkFormat &fmt,bool auto_mipmaps=false);
|
||||||
bool LoadTexture2DToArray(Texture2DArray *,const uint32_t layer,const OSString &);
|
bool LoadTexture2DToArray(Texture2DArray *,const uint32_t layer,const OSString &);
|
||||||
|
|
||||||
public: //FrameBuffer相关
|
|
||||||
|
|
||||||
Framebuffer *CreateFBO(RenderPass *rp,ImageView **color_list,const uint image_count,ImageView *depth);
|
|
||||||
// Framebuffer *CreateFBO(RenderPass *,List<ImageView *> &color,ImageView *depth);
|
|
||||||
Framebuffer *CreateFBO(RenderPass *,ImageView *color,ImageView *depth);
|
|
||||||
Framebuffer *CreateFBO(RenderPass *,ImageView *);
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
RenderTarget *CreateRT( const FramebufferInfo *fbi,RenderPass *,const uint32_t fence_count=1);
|
|
||||||
RenderTarget *CreateRT( const FramebufferInfo *fbi,const uint32_t fence_count=1);
|
|
||||||
};//class TextureManager
|
};//class TextureManager
|
||||||
|
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
@ -38,9 +38,11 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
const bool Get(T *&gm)const
|
T *Get()const
|
||||||
{
|
{
|
||||||
return gm_map_by_hash.Get(GetTypeHash<T>(),gm);
|
GraphModule *gm;
|
||||||
|
|
||||||
|
return gm_map_by_hash.Get(GetTypeHash<T>(),gm)?(T *)gm:nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool IsLoaded(const AnsiIDName &name)const{return gm_map_by_name.ContainsKey(name);}
|
const bool IsLoaded(const AnsiIDName &name)const{return gm_map_by_name.ContainsKey(name);}
|
||||||
@ -101,8 +103,6 @@ class GraphModule:public Comparator<GraphModule>
|
|||||||
bool module_enabled;
|
bool module_enabled;
|
||||||
bool module_ready;
|
bool module_ready;
|
||||||
|
|
||||||
GraphModulesMap dependent_modules;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
//GraphModule *GetModule(const AnsiIDName &name){return module_manager->GetModule(name,true);} ///<获取指定名称的模块
|
//GraphModule *GetModule(const AnsiIDName &name){return module_manager->GetModule(name,true);} ///<获取指定名称的模块
|
||||||
@ -145,7 +145,10 @@ public:
|
|||||||
|
|
||||||
virtual const size_t GetTypeHash()const=0;
|
virtual const size_t GetTypeHash()const=0;
|
||||||
|
|
||||||
virtual bool InitDependentModules(GraphModulesMap *); ///<初始化依赖的模块
|
/**
|
||||||
|
* 依赖的模块是在模板new之前就获取的,当前函数仅用于传递这些数据
|
||||||
|
*/
|
||||||
|
virtual bool InitDependentModules(GraphModulesMap &){module_inited_dependent=true;return true;} ///<初始化依赖的模块
|
||||||
|
|
||||||
virtual bool Init()=0; ///<初始化当前模块
|
virtual bool Init()=0; ///<初始化当前模块
|
||||||
|
|
||||||
@ -163,13 +166,6 @@ public:
|
|||||||
return(dependent_modules_name.Contains(gm.module_name)?1:-1); //如果我依赖于他,那么我比他大
|
return(dependent_modules_name.Contains(gm.module_name)?1:-1); //如果我依赖于他,那么我比他大
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
GraphModule * GetDependentModule(const AnsiIDName &name){return dependent_modules.Get(name);} ///<获取指定名称的模块
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
T * GetDependentModule(){return dependent_modules.Get<T>();} ///<获取指定类型的模块
|
|
||||||
|
|
||||||
public: //回调事件
|
public: //回调事件
|
||||||
|
|
||||||
virtual void OnRenderTarget(RenderTarget *){} ///<设置渲染目标
|
virtual void OnRenderTarget(RenderTarget *){} ///<设置渲染目标
|
||||||
|
@ -48,9 +48,9 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GraphModule *gm=new T(gmm,dgm_map);
|
GraphModule *gm=new T(gmm);
|
||||||
|
|
||||||
if(!gm->InitDependentModules(gmm))
|
if(!gm->InitDependentModules(dgm))
|
||||||
{
|
{
|
||||||
delete gm;
|
delete gm;
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
@ -32,7 +32,9 @@ public:
|
|||||||
GRAPH_MODULE_CONSTRUCT(SwapchainModule)
|
GRAPH_MODULE_CONSTRUCT(SwapchainModule)
|
||||||
virtual ~SwapchainModule();
|
virtual ~SwapchainModule();
|
||||||
|
|
||||||
bool Init(GraphModulesMap *) override;
|
bool InitDependentModules(GraphModulesMap &) override;
|
||||||
|
|
||||||
|
bool Init() override;
|
||||||
|
|
||||||
bool BeginFrame();
|
bool BeginFrame();
|
||||||
void EndFrame();
|
void EndFrame();
|
||||||
|
@ -164,9 +164,7 @@ SET(VK_DEVICE_CREATER_SOURCE ${SG_INCLUDE_PATH}/VKDevice.h
|
|||||||
SET(VK_DEVICE_SOURCE Vulkan/VKDeviceMemory.cpp
|
SET(VK_DEVICE_SOURCE Vulkan/VKDeviceMemory.cpp
|
||||||
Vulkan/VKDeviceBuffer.cpp
|
Vulkan/VKDeviceBuffer.cpp
|
||||||
Vulkan/VKDeviceSampler.cpp
|
Vulkan/VKDeviceSampler.cpp
|
||||||
Vulkan/VKDeviceMaterial.cpp
|
Vulkan/VKDeviceMaterial.cpp)
|
||||||
Vulkan/VKDeviceFramebuffer.cpp
|
|
||||||
Vulkan/VKDeviceRenderTarget.cpp)
|
|
||||||
|
|
||||||
SET(VK_PHYSICAL_DEVICE_SOURCE ${SG_INCLUDE_PATH}/VKPhysicalDevice.h
|
SET(VK_PHYSICAL_DEVICE_SOURCE ${SG_INCLUDE_PATH}/VKPhysicalDevice.h
|
||||||
Vulkan/VKPhysicalDevice.cpp
|
Vulkan/VKPhysicalDevice.cpp
|
||||||
@ -297,11 +295,14 @@ SET(SG_MANAGER_HEADER_PATH ${SG_INCLUDE_PATH}/manager)
|
|||||||
|
|
||||||
SET(GRAPH_MANAGER_HEADER ${SG_MANAGER_HEADER_PATH}/TextureManager.h
|
SET(GRAPH_MANAGER_HEADER ${SG_MANAGER_HEADER_PATH}/TextureManager.h
|
||||||
${SG_MANAGER_HEADER_PATH}/RenderPassManager.h
|
${SG_MANAGER_HEADER_PATH}/RenderPassManager.h
|
||||||
|
${SG_MANAGER_HEADER_PATH}/RenderTargetManager.h
|
||||||
${SG_MANAGER_HEADER_PATH}/MaterialManager.h
|
${SG_MANAGER_HEADER_PATH}/MaterialManager.h
|
||||||
)
|
)
|
||||||
|
|
||||||
SET(GRAPH_MANAGER_SOURCE manager/TextureManager.cpp
|
SET(GRAPH_MANAGER_SOURCE manager/TextureManager.cpp
|
||||||
manager/RenderPassManager.cpp
|
manager/RenderPassManager.cpp
|
||||||
|
manager/RenderTargetManager.cpp
|
||||||
|
manager/RenderTargetManagerFBO.cpp
|
||||||
manager/MaterialManager.cpp
|
manager/MaterialManager.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -184,13 +184,8 @@ bool CreateDepthAttachment( List<VkAttachmentReference> &ref_list,List<VkAttachm
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RenderPassManager::Init(GraphModulesMap *gmm)
|
bool RenderPassManager::Init()
|
||||||
{
|
{
|
||||||
if(!GraphModule::Init(gmm))
|
|
||||||
return(false);
|
|
||||||
|
|
||||||
gmm->Get(rp_manager);
|
|
||||||
|
|
||||||
pipeline_cache=GetDeviceAttribute()->pipeline_cache;
|
pipeline_cache=GetDeviceAttribute()->pipeline_cache;
|
||||||
|
|
||||||
hash=CreateRenderPassHash();
|
hash=CreateRenderPassHash();
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
#include<hgl/graph/VKDevice.h>
|
#include<hgl/graph/manager/RenderTargetManager.h>
|
||||||
#include<hgl/graph/manager/TextureManager.h>
|
|
||||||
#include<hgl/graph/manager/RenderPassManager.h>
|
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
RenderTarget *TextureManager::CreateRT(const FramebufferInfo *fbi,RenderPass *rp,const uint32_t fence_count)
|
|
||||||
|
RenderTarget *RenderTargetManager::CreateRT(const FramebufferInfo *fbi,RenderPass *rp,const uint32_t fence_count)
|
||||||
{
|
{
|
||||||
if(!fbi)return(nullptr);
|
if(!fbi)return(nullptr);
|
||||||
if(!rp)return(nullptr);
|
if(!rp)return(nullptr);
|
||||||
@ -50,7 +49,7 @@ RenderTarget *TextureManager::CreateRT(const FramebufferInfo *fbi,RenderPass *rp
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderTarget *TextureManager::CreateRT(const FramebufferInfo *fbi,const uint32_t fence_count)
|
RenderTarget *RenderTargetManager::CreateRT(const FramebufferInfo *fbi,const uint32_t fence_count)
|
||||||
{
|
{
|
||||||
if(!fbi)return(nullptr);
|
if(!fbi)return(nullptr);
|
||||||
|
|
@ -1,5 +1,4 @@
|
|||||||
#include<hgl/graph/VKDevice.h>
|
#include<hgl/graph/manager/RenderTargetManager.h>
|
||||||
#include<hgl/graph/manager/TextureManager.h>
|
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
VkFramebuffer CreateVulkanFramebuffer(VkDevice device,RenderPass *rp,const VkExtent2D &extent,VkImageView *attachments,const uint attachmentCount)
|
VkFramebuffer CreateVulkanFramebuffer(VkDevice device,RenderPass *rp,const VkExtent2D &extent,VkImageView *attachments,const uint attachmentCount)
|
||||||
@ -21,7 +20,7 @@ VkFramebuffer CreateVulkanFramebuffer(VkDevice device,RenderPass *rp,const VkExt
|
|||||||
return fb;
|
return fb;
|
||||||
}
|
}
|
||||||
|
|
||||||
Framebuffer *TextureManager::CreateFBO(RenderPass *rp,ImageView **color_list,const uint image_count,ImageView *depth)
|
Framebuffer *RenderTargetManager::CreateFBO(RenderPass *rp,ImageView **color_list,const uint image_count,ImageView *depth)
|
||||||
{
|
{
|
||||||
uint att_count=image_count;
|
uint att_count=image_count;
|
||||||
|
|
||||||
@ -90,7 +89,7 @@ Framebuffer *TextureManager::CreateFBO(RenderPass *rp,ImageView **color_list,con
|
|||||||
// return CreateFBO(rp,color.GetData(),color.GetCount(),depth);
|
// return CreateFBO(rp,color.GetData(),color.GetCount(),depth);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
Framebuffer *TextureManager::CreateFBO(RenderPass *rp,ImageView *color,ImageView *depth)
|
Framebuffer *RenderTargetManager::CreateFBO(RenderPass *rp,ImageView *color,ImageView *depth)
|
||||||
{
|
{
|
||||||
if(!rp)return(nullptr);
|
if(!rp)return(nullptr);
|
||||||
if(!color&&!depth)return(nullptr);
|
if(!color&&!depth)return(nullptr);
|
||||||
@ -98,7 +97,7 @@ Framebuffer *TextureManager::CreateFBO(RenderPass *rp,ImageView *color,ImageView
|
|||||||
return CreateFBO(rp,&color,1,depth);
|
return CreateFBO(rp,&color,1,depth);
|
||||||
}
|
}
|
||||||
|
|
||||||
Framebuffer *TextureManager::CreateFBO(RenderPass *rp,ImageView *iv)
|
Framebuffer *RenderTargetManager::CreateFBO(RenderPass *rp,ImageView *iv)
|
||||||
{
|
{
|
||||||
if(!rp)return(nullptr);
|
if(!rp)return(nullptr);
|
||||||
if(!iv)return(nullptr);
|
if(!iv)return(nullptr);
|
||||||
@ -111,4 +110,4 @@ Framebuffer *TextureManager::CreateFBO(RenderPass *rp,ImageView *iv)
|
|||||||
else
|
else
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
@ -31,33 +31,4 @@ GraphModule::~GraphModule()
|
|||||||
LOG_INFO("GraphModule::~GraphModule: "+AnsiString(module_name.GetName()))
|
LOG_INFO("GraphModule::~GraphModule: "+AnsiString(module_name.GetName()))
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GraphModule::InitDependentModules(GraphModulesMap *)
|
|
||||||
{
|
|
||||||
auto dm_list=GetDependentModules();
|
|
||||||
|
|
||||||
if(!dm_list.IsEmpty())
|
|
||||||
{
|
|
||||||
if(!gmm)
|
|
||||||
return(false);
|
|
||||||
|
|
||||||
if(gmm->IsEmpty())
|
|
||||||
return(false);
|
|
||||||
|
|
||||||
for(auto dm_name:dm_list)
|
|
||||||
{
|
|
||||||
GraphModule *dm=gmm->Get(dm_name);
|
|
||||||
|
|
||||||
if(dm&&dm->IsInited())
|
|
||||||
{
|
|
||||||
dependent_modules.Add(dm);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
return(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include<hgl/graph/module/SwapchainModule.h>
|
#include<hgl/graph/module/SwapchainModule.h>
|
||||||
#include<hgl/graph/module/GraphModuleFactory.h>
|
#include<hgl/graph/module/GraphModuleFactory.h>
|
||||||
#include<hgl/graph/manager/RenderPassManager.h>
|
#include<hgl/graph/manager/RenderPassManager.h>
|
||||||
#include<hgl/graph/manager/TextureManager.h>
|
#include<hgl/graph/manager/TextureManager.h>
|
||||||
@ -230,6 +230,18 @@ SwapchainModule::~SwapchainModule()
|
|||||||
delete swapchain;
|
delete swapchain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SwapchainModule::InitDependentModules(GraphModulesMap &dep_gmm)
|
||||||
|
{
|
||||||
|
RenderPassManager *rp_manager=dep_gmm.Get<RenderPassManager>();
|
||||||
|
|
||||||
|
if(!rp_manager)
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
SwapchainRenderbufferInfo rbi(swapchain->surface_format.format,swapchain->depth_format);
|
||||||
|
|
||||||
|
swapchain_rp=rp_manager->AcquireRenderPass(&rbi);
|
||||||
|
}
|
||||||
|
|
||||||
bool SwapchainModule::Init()
|
bool SwapchainModule::Init()
|
||||||
{
|
{
|
||||||
if(!CreateSwapchain())
|
if(!CreateSwapchain())
|
||||||
@ -240,10 +252,6 @@ bool SwapchainModule::Init()
|
|||||||
if(!rpm)
|
if(!rpm)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
SwapchainRenderbufferInfo rbi(swapchain->surface_format.format,swapchain->depth_format);
|
|
||||||
|
|
||||||
swapchain_rp=rpm->AcquireRenderPass(&rbi);
|
|
||||||
|
|
||||||
//#ifdef _DEBUG
|
//#ifdef _DEBUG
|
||||||
// if(dev_attr->debug_utils)
|
// if(dev_attr->debug_utils)
|
||||||
// dev_attr->debug_utils->SetRenderPass(swapchain_rp->GetVkRenderPass(),"SwapchainRenderPass");
|
// dev_attr->debug_utils->SetRenderPass(swapchain_rp->GetVkRenderPass(),"SwapchainRenderPass");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user