Added "RenderFramework *" in GraphModule and IRenderTarget
This commit is contained in:
parent
7ec1c095cc
commit
e5a46f3ee8
@ -40,11 +40,13 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Window * GetWindow (){return win;}
|
Window * GetWindow ()const{return win;}
|
||||||
GPUDevice * GetDevice (){return device;}
|
GPUDevice * GetDevice ()const{return device;}
|
||||||
GPUDeviceAttribute * GetDeviceAttribute (){return device->GetDeviceAttribute();}
|
VkDevice GetVkDevice ()const{return device->GetDevice();}
|
||||||
|
const GPUPhysicalDevice * GetPhysicalDevice ()const{return device->GetPhysicalDevice();}
|
||||||
|
GPUDeviceAttribute * GetDeviceAttribute ()const{return device->GetDeviceAttribute();}
|
||||||
|
|
||||||
RenderResource * GetRenderResource (){return render_resource;}
|
RenderResource * GetRenderResource ()const{return render_resource;}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -36,6 +36,9 @@ struct VertexAttribDataPtr
|
|||||||
using BindingMap =Map<AnsiString,int>;
|
using BindingMap =Map<AnsiString,int>;
|
||||||
using BindingMapArray =BindingMap[VK_DESCRIPTOR_TYPE_RANGE_SIZE];
|
using BindingMapArray =BindingMap[VK_DESCRIPTOR_TYPE_RANGE_SIZE];
|
||||||
|
|
||||||
|
class GraphModule;
|
||||||
|
class RenderFramework;
|
||||||
|
|
||||||
class VulkanInstance;
|
class VulkanInstance;
|
||||||
class GPUPhysicalDevice;
|
class GPUPhysicalDevice;
|
||||||
class GPUDevice;
|
class GPUDevice;
|
||||||
@ -44,9 +47,13 @@ class DeviceQueue;
|
|||||||
class ImageView;
|
class ImageView;
|
||||||
class Framebuffer;
|
class Framebuffer;
|
||||||
struct Swapchain;
|
struct Swapchain;
|
||||||
|
class IRenderTarget;
|
||||||
class RenderTarget;
|
class RenderTarget;
|
||||||
|
class MFRenderTarget;
|
||||||
class SwapchainRenderTarget;
|
class SwapchainRenderTarget;
|
||||||
|
|
||||||
|
struct CopyBufferToImageInfo;
|
||||||
|
|
||||||
class Texture;
|
class Texture;
|
||||||
class Texture1D;
|
class Texture1D;
|
||||||
class Texture1DArray;
|
class Texture1DArray;
|
||||||
@ -58,6 +65,8 @@ class TextureCubeArray;
|
|||||||
|
|
||||||
class Sampler;
|
class Sampler;
|
||||||
|
|
||||||
|
class TileData;
|
||||||
|
|
||||||
class DeviceMemory;
|
class DeviceMemory;
|
||||||
class DeviceBuffer;
|
class DeviceBuffer;
|
||||||
struct DeviceBufferData;
|
struct DeviceBufferData;
|
||||||
|
@ -51,65 +51,4 @@ public:
|
|||||||
bool Write (const void *ptr) {return buf.memory->Write(ptr);}
|
bool Write (const void *ptr) {return buf.memory->Write(ptr);}
|
||||||
};//class DeviceBuffer
|
};//class DeviceBuffer
|
||||||
|
|
||||||
template<typename T> struct DeviceBufferData
|
|
||||||
{
|
|
||||||
T *data; ///<CPU端数据
|
|
||||||
|
|
||||||
// 数据如何被设置为不可以在CPU端访问,那么不会在CPU端保存备份。
|
|
||||||
// 这种情况的话,将不会允许CPU端随机读写,只能写入
|
|
||||||
|
|
||||||
|
|
||||||
VkDeviceSize size;
|
|
||||||
DeviceBuffer *dev_buffer;
|
|
||||||
};
|
|
||||||
|
|
||||||
template<typename T> class DeviceBufferRandomAccess
|
|
||||||
{
|
|
||||||
DeviceBufferData<T> *dbd;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
operator T *(){return dbd->data;}
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
DeviceBufferRandomAccess(DeviceBufferData<T> *obj)
|
|
||||||
{
|
|
||||||
dbd=obj;
|
|
||||||
|
|
||||||
}
|
|
||||||
virtual ~DeviceBufferAccess()
|
|
||||||
{
|
|
||||||
if(!dbd)return;
|
|
||||||
delete dbd->dev_buffer;
|
|
||||||
delete dbd;
|
|
||||||
}
|
|
||||||
bool Write(const T *ptr)
|
|
||||||
{
|
|
||||||
return dbd->dev_buffer->Write(ptr);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<typename T> class DeviceBufferObject
|
|
||||||
{
|
|
||||||
DeviceBufferData<T> *dbd;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
DeviceBufferObject(DeviceBufferData<T> *obj)
|
|
||||||
{
|
|
||||||
dbd=obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual ~DeviceBufferObject()
|
|
||||||
{
|
|
||||||
if(!dbd)return;
|
|
||||||
|
|
||||||
delete dbd->dev_buffer;
|
|
||||||
delete dbd;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};//template<typename T> class DeviceBufferObject
|
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
@ -23,16 +23,6 @@ class RenderFramework;
|
|||||||
* 所以RenderTarget的其实是一个多态类,根据不同的情况,有不同的实现
|
* 所以RenderTarget的其实是一个多态类,根据不同的情况,有不同的实现
|
||||||
*/
|
*/
|
||||||
|
|
||||||
template<typename T> class DeviceBufferObject
|
|
||||||
{
|
|
||||||
T data;
|
|
||||||
DeviceBuffer *dev_buffer;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
|
||||||
};
|
|
||||||
|
|
||||||
class IRenderTarget
|
class IRenderTarget
|
||||||
{
|
{
|
||||||
RenderFramework *render_framework;
|
RenderFramework *render_framework;
|
||||||
@ -44,8 +34,8 @@ class IRenderTarget
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
RenderFramework * GetRenderFramework ()const{return render_framework;}
|
RenderFramework * GetRenderFramework ()const{return render_framework;}
|
||||||
GPUDevice * GetDevice ()const{return render_framework->GetDevice();}
|
GPUDevice * GetDevice ()const;
|
||||||
VkDevice GetVkDevice ()const{return render_framework->GetDevice()->GetDevice();}
|
VkDevice GetVkDevice ()const;
|
||||||
|
|
||||||
const VkExtent2D &GetExtent ()const{return extent;}
|
const VkExtent2D &GetExtent ()const{return extent;}
|
||||||
|
|
||||||
|
@ -1,20 +1,26 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include<hgl/graph/VKDevice.h>
|
#include<hgl/graph/VK.h>
|
||||||
#include<hgl/type/TypeInfo.h>
|
#include<hgl/type/TypeInfo.h>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
|
|
||||||
|
class TextureManager;
|
||||||
|
class RenderTargetManager;
|
||||||
|
class RenderPassManager;
|
||||||
|
|
||||||
class GraphModule
|
class GraphModule
|
||||||
{
|
{
|
||||||
GPUDevice *device;
|
RenderFramework *render_framework;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
GPUDevice * GetDevice () {return device;} ///<取得GPU设备
|
RenderFramework * GetRenderFramework ()const{return render_framework;} ///<取得渲染框架
|
||||||
VkDevice GetVkDevice ()const {return device->GetDevice();} ///<取得VkDevice
|
GPUDevice * GetDevice (); ///<取得GPU设备
|
||||||
const GPUPhysicalDevice * GetPhysicalDevice ()const {return device->GetPhysicalDevice();} ///<取得物理设备
|
VkDevice GetVkDevice ()const; ///<取得VkDevice
|
||||||
GPUDeviceAttribute *GetDeviceAttribute () {return device->GetDeviceAttribute();} ///<取得设备属性
|
const GPUPhysicalDevice * GetPhysicalDevice ()const; ///<取得物理设备
|
||||||
|
GPUDeviceAttribute *GetDeviceAttribute ()const; ///<取得设备属性
|
||||||
|
VkPipelineCache GetPipelineCache ()const; ///<取得PipelineCache
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -22,7 +28,7 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
GraphModule(GPUDevice *dev){device=dev;}
|
GraphModule(RenderFramework *rf){render_framework=rf;}
|
||||||
virtual ~GraphModule()=default;
|
virtual ~GraphModule()=default;
|
||||||
|
|
||||||
virtual const size_t GetTypeHash()const noexcept=0;
|
virtual const size_t GetTypeHash()const noexcept=0;
|
||||||
@ -47,7 +53,7 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
GraphModuleInherit(GPUDevice *dev,const AnsiString &name):BASE(dev)
|
GraphModuleInherit(RenderFramework *rf,const AnsiString &name):BASE(rf)
|
||||||
{
|
{
|
||||||
manager_name=name;
|
manager_name=name;
|
||||||
}
|
}
|
||||||
@ -57,6 +63,6 @@ public:
|
|||||||
|
|
||||||
#define GRAPH_MODULE_CLASS(class_name) class class_name:public GraphModuleInherit<class_name,GraphModule>
|
#define GRAPH_MODULE_CLASS(class_name) class class_name:public GraphModuleInherit<class_name,GraphModule>
|
||||||
|
|
||||||
#define GRAPH_MODULE_CONSTRUCT(class_name) class_name::class_name(GPUDevice *dev):GraphModuleInherit<class_name,GraphModule>(dev,#class_name)
|
#define GRAPH_MODULE_CONSTRUCT(class_name) class_name::class_name(RenderFramework *rf):GraphModuleInherit<class_name,GraphModule>(rf,#class_name)
|
||||||
|
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
@ -5,11 +5,9 @@
|
|||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
|
|
||||||
class GraphModule;
|
|
||||||
|
|
||||||
class GraphModuleManager
|
class GraphModuleManager
|
||||||
{
|
{
|
||||||
GPUDevice *device;
|
RenderFramework *render_framework;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
@ -18,13 +16,14 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
GraphModuleManager(GPUDevice *dev){device=dev;}
|
GraphModuleManager(RenderFramework *rf){render_framework=rf;}
|
||||||
|
|
||||||
virtual ~GraphModuleManager();
|
virtual ~GraphModuleManager();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
GPUDevice * GetDevice() {return device;} ///<取得GPU设备
|
RenderFramework * GetRenderFramework ()const{return render_framework;} ///<取得渲染框架
|
||||||
|
GPUDevice * GetDevice ()const; ///<取得GPU设备
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -46,7 +45,7 @@ public:
|
|||||||
if(Contains<T>())
|
if(Contains<T>())
|
||||||
return Get<T>();
|
return Get<T>();
|
||||||
|
|
||||||
T *result=new T(device);
|
T *result=new T(render_framework);
|
||||||
|
|
||||||
Registry(result);
|
Registry(result);
|
||||||
|
|
||||||
|
@ -15,15 +15,13 @@ inline util::Hash *CreateRenderPassHash()
|
|||||||
|
|
||||||
GRAPH_MODULE_CLASS(RenderPassManager)
|
GRAPH_MODULE_CLASS(RenderPassManager)
|
||||||
{
|
{
|
||||||
VkPipelineCache pipeline_cache;
|
|
||||||
|
|
||||||
util::Hash *hash;
|
util::Hash *hash;
|
||||||
|
|
||||||
Map<RenderPassHASHCode,RenderPass *> RenderPassList;
|
Map<RenderPassHASHCode,RenderPass *> RenderPassList;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
RenderPassManager(GPUDevice *);
|
RenderPassManager(RenderFramework *);
|
||||||
~RenderPassManager();
|
~RenderPassManager();
|
||||||
|
|
||||||
friend class GraphModuleManager;
|
friend class GraphModuleManager;
|
||||||
|
@ -14,7 +14,7 @@ GRAPH_MODULE_CLASS(RenderTargetManager)
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
RenderTargetManager(GPUDevice *,TextureManager *tm,RenderPassManager *rpm);
|
RenderTargetManager(RenderFramework *,TextureManager *tm,RenderPassManager *rpm);
|
||||||
virtual ~RenderTargetManager()=default;
|
virtual ~RenderTargetManager()=default;
|
||||||
|
|
||||||
public: //FrameBuffer相关
|
public: //FrameBuffer相关
|
||||||
|
@ -4,10 +4,6 @@
|
|||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
|
|
||||||
class RenderTargetManager;
|
|
||||||
class RenderPassManager;
|
|
||||||
class RenderPass;
|
|
||||||
|
|
||||||
GRAPH_MODULE_CLASS(SwapchainModule)
|
GRAPH_MODULE_CLASS(SwapchainModule)
|
||||||
{
|
{
|
||||||
TextureManager * tex_manager =nullptr;
|
TextureManager * tex_manager =nullptr;
|
||||||
@ -30,7 +26,7 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
SwapchainModule(GPUDevice *,TextureManager *tm,RenderTargetManager *rtm,RenderPassManager *rpm);
|
SwapchainModule(RenderFramework *,TextureManager *tm,RenderTargetManager *rtm,RenderPassManager *rpm);
|
||||||
virtual ~SwapchainModule();
|
virtual ~SwapchainModule();
|
||||||
|
|
||||||
// RenderCmdBuffer *BeginRender();
|
// RenderCmdBuffer *BeginRender();
|
||||||
@ -41,10 +37,10 @@ public:
|
|||||||
|
|
||||||
RenderPass * GetRenderPass ()const{return sc_render_pass;}
|
RenderPass * GetRenderPass ()const{return sc_render_pass;}
|
||||||
|
|
||||||
const VkExtent2D & GetSwapchainSize()const{return sc_render_target->GetExtent();}
|
const VkExtent2D & GetSwapchainSize()const;
|
||||||
|
|
||||||
SwapchainRenderTarget * GetRenderTarget ()const{return sc_render_target;}
|
SwapchainRenderTarget * GetRenderTarget ()const{return sc_render_target;}
|
||||||
IRenderTarget * AcquireNextImage()const{return sc_render_target->AcquireNextImage();}
|
IRenderTarget * AcquireNextImage()const;
|
||||||
};//class SwapchainModule:public GraphModule
|
};//class SwapchainModule:public GraphModule
|
||||||
|
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
@ -34,7 +34,7 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
TextureManager(GPUDevice *);
|
TextureManager(RenderFramework *rf);
|
||||||
virtual ~TextureManager();
|
virtual ~TextureManager();
|
||||||
|
|
||||||
const VkFormatProperties GetFormatProperties(const VkFormat)const;
|
const VkFormatProperties GetFormatProperties(const VkFormat)const;
|
||||||
|
2
res
2
res
@ -1 +1 @@
|
|||||||
Subproject commit fe8fcabeb54f7a5b23f38260e6e09bbdcf015b7f
|
Subproject commit e1a36d78f0eead5f6bb65493432c4690637b991d
|
@ -53,6 +53,7 @@ SET(GRAPH_MODULE_FILES ${SGM_HEADER_PATH}/GraphModule.h
|
|||||||
${SGM_HEADER_PATH}/RenderModule.h
|
${SGM_HEADER_PATH}/RenderModule.h
|
||||||
${SGM_HEADER_PATH}/SwapchainModule.h
|
${SGM_HEADER_PATH}/SwapchainModule.h
|
||||||
|
|
||||||
|
${SGM_SOURCE_PATH}/GraphModule.cpp
|
||||||
${SGM_SOURCE_PATH}/GraphModuleManager.cpp
|
${SGM_SOURCE_PATH}/GraphModuleManager.cpp
|
||||||
${SGM_SOURCE_PATH}/RenderPassManager.cpp
|
${SGM_SOURCE_PATH}/RenderPassManager.cpp
|
||||||
${SGM_SOURCE_PATH}/TextureManager.cpp
|
${SGM_SOURCE_PATH}/TextureManager.cpp
|
||||||
|
@ -91,7 +91,7 @@ bool RenderFramework::Init(uint w,uint h)
|
|||||||
|
|
||||||
win->Join(this);
|
win->Join(this);
|
||||||
|
|
||||||
module_manager=new GraphModuleManager(device);
|
module_manager=new GraphModuleManager(this);
|
||||||
|
|
||||||
rp_manager=module_manager->GetOrCreate<RenderPassManager>();
|
rp_manager=module_manager->GetOrCreate<RenderPassManager>();
|
||||||
|
|
||||||
@ -103,10 +103,10 @@ bool RenderFramework::Init(uint w,uint h)
|
|||||||
if(!tex_manager)
|
if(!tex_manager)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
rt_manager=new RenderTargetManager(device,tex_manager,rp_manager);
|
rt_manager=new RenderTargetManager(this,tex_manager,rp_manager);
|
||||||
module_manager->Registry(rt_manager);
|
module_manager->Registry(rt_manager);
|
||||||
|
|
||||||
sc_module=new SwapchainModule(device,tex_manager,rt_manager,rp_manager);
|
sc_module=new SwapchainModule(this,tex_manager,rt_manager,rp_manager);
|
||||||
module_manager->Registry(sc_module);
|
module_manager->Registry(sc_module);
|
||||||
|
|
||||||
OnResize(w,h);
|
OnResize(w,h);
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include<hgl/graph/VKCommandBuffer.h>
|
#include<hgl/graph/VKCommandBuffer.h>
|
||||||
#include<hgl/graph/VKBuffer.h>
|
#include<hgl/graph/VKBuffer.h>
|
||||||
#include<hgl/graph/VKTexture.h>
|
#include<hgl/graph/VKTexture.h>
|
||||||
|
#include<hgl/graph/VKDevice.h>
|
||||||
#include"CopyBufferToImage.h"
|
#include"CopyBufferToImage.h"
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
void GenerateMipmaps(TextureCmdBuffer *texture_cmd_buf,VkImage image,VkImageAspectFlags aspect_mask,VkExtent3D extent,const uint32_t mipLevels,const uint32_t layer_count);
|
void GenerateMipmaps(TextureCmdBuffer *texture_cmd_buf,VkImage image,VkImageAspectFlags aspect_mask,VkExtent3D extent,const uint32_t mipLevels,const uint32_t layer_count);
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include<hgl/graph/VKCommandBuffer.h>
|
#include<hgl/graph/VKCommandBuffer.h>
|
||||||
#include<hgl/graph/VKBuffer.h>
|
#include<hgl/graph/VKBuffer.h>
|
||||||
#include<hgl/graph/VKTexture.h>
|
#include<hgl/graph/VKTexture.h>
|
||||||
|
#include<hgl/graph/VKDevice.h>
|
||||||
#include"CopyBufferToImage.h"
|
#include"CopyBufferToImage.h"
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
void GenerateMipmaps(TextureCmdBuffer *texture_cmd_buf,VkImage image,VkImageAspectFlags aspect_mask,VkExtent3D extent,const uint32_t mipLevels,const uint32_t layer_count);
|
void GenerateMipmaps(TextureCmdBuffer *texture_cmd_buf,VkImage image,VkImageAspectFlags aspect_mask,VkExtent3D extent,const uint32_t mipLevels,const uint32_t layer_count);
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include<hgl/graph/VKImageCreateInfo.h>
|
#include<hgl/graph/VKImageCreateInfo.h>
|
||||||
#include<hgl/graph/VKCommandBuffer.h>
|
#include<hgl/graph/VKCommandBuffer.h>
|
||||||
#include<hgl/graph/VKBuffer.h>
|
#include<hgl/graph/VKBuffer.h>
|
||||||
|
#include<hgl/graph/VKDevice.h>
|
||||||
#include"BufferImageCopy2D.h"
|
#include"BufferImageCopy2D.h"
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
void GenerateMipmaps(TextureCmdBuffer *texture_cmd_buf,VkImage image,VkImageAspectFlags aspect_mask,VkExtent3D extent,const uint32_t mipLevels,const uint32_t layer_count);
|
void GenerateMipmaps(TextureCmdBuffer *texture_cmd_buf,VkImage image,VkImageAspectFlags aspect_mask,VkExtent3D extent,const uint32_t mipLevels,const uint32_t layer_count);
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
#include<hgl/graph/module/RenderTargetManager.h>
|
#include<hgl/graph/module/RenderTargetManager.h>
|
||||||
|
#include<hgl/graph/VKRenderPass.h>
|
||||||
|
#include<hgl/graph/VKImageView.h>
|
||||||
|
#include<hgl/graph/VKFramebuffer.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)
|
||||||
|
14
src/SceneGraph/module/GraphModule.cpp
Normal file
14
src/SceneGraph/module/GraphModule.cpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include<hgl/graph/module/GraphModule.h>
|
||||||
|
#include<hgl/graph/RenderFramework.h>
|
||||||
|
#include<hgl/graph/VKDevice.h>
|
||||||
|
|
||||||
|
VK_NAMESPACE_BEGIN
|
||||||
|
|
||||||
|
GPUDevice * GraphModule::GetDevice () {return render_framework->GetDevice();}
|
||||||
|
VkDevice GraphModule::GetVkDevice ()const {return render_framework->GetVkDevice();}
|
||||||
|
const GPUPhysicalDevice * GraphModule::GetPhysicalDevice ()const {return render_framework->GetPhysicalDevice();}
|
||||||
|
GPUDeviceAttribute *GraphModule::GetDeviceAttribute ()const {return render_framework->GetDeviceAttribute();}
|
||||||
|
|
||||||
|
VkPipelineCache GraphModule::GetPipelineCache ()const {return render_framework->GetDeviceAttribute()->pipeline_cache;}
|
||||||
|
|
||||||
|
VK_NAMESPACE_END
|
@ -1,8 +1,14 @@
|
|||||||
#include<hgl/graph/module/GraphModule.h>
|
#include<hgl/graph/module/GraphModule.h>
|
||||||
#include<hgl/graph/module/GraphModuleManager.h>
|
#include<hgl/graph/module/GraphModuleManager.h>
|
||||||
|
#include<hgl/graph/RenderFramework.h>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
|
|
||||||
|
GPUDevice *GraphModuleManager::GetDevice()const
|
||||||
|
{
|
||||||
|
return render_framework->GetDevice();
|
||||||
|
}
|
||||||
|
|
||||||
bool GraphModuleManager::Registry(GraphModule *gm)
|
bool GraphModuleManager::Registry(GraphModule *gm)
|
||||||
{
|
{
|
||||||
if(!gm)
|
if(!gm)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#include<hgl/graph/module/RenderPassManager.h>
|
#include<hgl/graph/module/RenderPassManager.h>
|
||||||
#include<hgl/graph/VKRenderPass.h>
|
#include<hgl/graph/VKRenderPass.h>
|
||||||
|
#include<hgl/graph/VKPhysicalDevice.h>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
void CreateSubpassDependency(List<VkSubpassDependency> &subpass_dependency_list,const uint32_t count)
|
void CreateSubpassDependency(List<VkSubpassDependency> &subpass_dependency_list,const uint32_t count)
|
||||||
@ -186,8 +187,6 @@ bool CreateDepthAttachment( List<VkAttachmentReference> &ref_list,List<VkAttachm
|
|||||||
|
|
||||||
GRAPH_MODULE_CONSTRUCT(RenderPassManager)
|
GRAPH_MODULE_CONSTRUCT(RenderPassManager)
|
||||||
{
|
{
|
||||||
pipeline_cache=GetDeviceAttribute()->pipeline_cache;
|
|
||||||
|
|
||||||
hash=CreateRenderPassHash();
|
hash=CreateRenderPassHash();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -287,7 +286,7 @@ RenderPass *RenderPassManager::CreateRenderPass(const List<VkAttachmentDescripti
|
|||||||
if(vkCreateRenderPass(GetVkDevice(),&rp_info,nullptr,&render_pass)!=VK_SUCCESS)
|
if(vkCreateRenderPass(GetVkDevice(),&rp_info,nullptr,&render_pass)!=VK_SUCCESS)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
return(new RenderPass(GetVkDevice(),pipeline_cache,render_pass,rbi->GetColorFormatList(),depth_format));
|
return(new RenderPass(GetVkDevice(),GetPipelineCache(),render_pass,rbi->GetColorFormatList(),depth_format));
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderPass *RenderPassManager::AcquireRenderPass(const RenderbufferInfo *rbi,const uint subpass_count)
|
RenderPass *RenderPassManager::AcquireRenderPass(const RenderbufferInfo *rbi,const uint subpass_count)
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
#include<hgl/graph/module/RenderTargetManager.h>
|
#include<hgl/graph/module/RenderTargetManager.h>
|
||||||
|
#include<hgl/graph/VKRenderTarget.h>
|
||||||
|
#include<hgl/graph/VKDevice.h>
|
||||||
#include<hgl/graph/module/TextureManager.h>
|
#include<hgl/graph/module/TextureManager.h>
|
||||||
#include<hgl/graph/module/RenderPassManager.h>
|
#include<hgl/graph/module/RenderPassManager.h>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
|
|
||||||
RenderTargetManager::RenderTargetManager(GPUDevice *dev,TextureManager *tm,RenderPassManager *rpm):GraphModuleInherit<RenderTargetManager,GraphModule>(dev,"RenderTargetManager")
|
RenderTargetManager::RenderTargetManager(RenderFramework *rf,TextureManager *tm,RenderPassManager *rpm):GraphModuleInherit<RenderTargetManager,GraphModule>(rf,"RenderTargetManager")
|
||||||
{
|
{
|
||||||
tex_manager=tm;
|
tex_manager=tm;
|
||||||
rp_manager=rpm;
|
rp_manager=rpm;
|
||||||
@ -58,7 +60,7 @@ RenderTarget *RenderTargetManager::CreateRT(const FramebufferInfo *fbi,RenderPas
|
|||||||
|
|
||||||
color_texture_list.DiscardObject();
|
color_texture_list.DiscardObject();
|
||||||
|
|
||||||
return(new RenderTarget(rtd));
|
return(new RenderTarget(GetRenderFramework(),rtd));
|
||||||
}
|
}
|
||||||
|
|
||||||
SAFE_CLEAR(depth_texture);
|
SAFE_CLEAR(depth_texture);
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include<hgl/graph/module/RenderPassManager.h>
|
#include<hgl/graph/module/RenderPassManager.h>
|
||||||
#include<hgl/graph/module/TextureManager.h>
|
#include<hgl/graph/module/TextureManager.h>
|
||||||
#include<hgl/graph/module/RenderTargetManager.h>
|
#include<hgl/graph/module/RenderTargetManager.h>
|
||||||
|
#include<hgl/graph/VKDevice.h>
|
||||||
#include<hgl/graph/VKSwapchain.h>
|
#include<hgl/graph/VKSwapchain.h>
|
||||||
#include<hgl/graph/VKDeviceAttribute.h>
|
#include<hgl/graph/VKDeviceAttribute.h>
|
||||||
#include<hgl/graph/VKRenderTarget.h>
|
#include<hgl/graph/VKRenderTarget.h>
|
||||||
@ -217,12 +218,12 @@ bool SwapchainModule::CreateSwapchainRenderTarget()
|
|||||||
rtd->color_textures[0] =sc_image->color;
|
rtd->color_textures[0] =sc_image->color;
|
||||||
rtd->depth_texture =sc_image->depth;
|
rtd->depth_texture =sc_image->depth;
|
||||||
|
|
||||||
rt_list[i]=new RenderTarget(rtd);
|
rt_list[i]=new RenderTarget(GetRenderFramework(),rtd);
|
||||||
|
|
||||||
++sc_image;
|
++sc_image;
|
||||||
}
|
}
|
||||||
|
|
||||||
sc_render_target=new SwapchainRenderTarget( device->GetDevice(),
|
sc_render_target=new SwapchainRenderTarget( GetRenderFramework(),
|
||||||
swapchain,
|
swapchain,
|
||||||
device->CreateGPUSemaphore(),
|
device->CreateGPUSemaphore(),
|
||||||
rt_list
|
rt_list
|
||||||
@ -236,7 +237,7 @@ SwapchainModule::~SwapchainModule()
|
|||||||
SAFE_CLEAR(sc_render_target);
|
SAFE_CLEAR(sc_render_target);
|
||||||
}
|
}
|
||||||
|
|
||||||
SwapchainModule::SwapchainModule(GPUDevice *dev,TextureManager *tm,RenderTargetManager *rtm,RenderPassManager *rpm):GraphModuleInherit<SwapchainModule,GraphModule>(dev,"SwapchainModule")
|
SwapchainModule::SwapchainModule(RenderFramework *rf,TextureManager *tm,RenderTargetManager *rtm,RenderPassManager *rpm):GraphModuleInherit<SwapchainModule,GraphModule>(rf,"SwapchainModule")
|
||||||
{
|
{
|
||||||
tex_manager=tm;
|
tex_manager=tm;
|
||||||
rt_manager=rtm;
|
rt_manager=rtm;
|
||||||
@ -263,7 +264,9 @@ void SwapchainModule::OnResize(const VkExtent2D &extent)
|
|||||||
{
|
{
|
||||||
SAFE_CLEAR(sc_render_target)
|
SAFE_CLEAR(sc_render_target)
|
||||||
|
|
||||||
GetDeviceAttribute()->RefreshSurfaceCaps();
|
GPUDeviceAttribute *dev_attr=GetDeviceAttribute();
|
||||||
|
|
||||||
|
dev_attr->RefreshSurfaceCaps();
|
||||||
|
|
||||||
CreateSwapchainRenderTarget();
|
CreateSwapchainRenderTarget();
|
||||||
}
|
}
|
||||||
@ -281,4 +284,8 @@ void SwapchainModule::OnResize(const VkExtent2D &extent)
|
|||||||
// sc_render_target->WaitFence();
|
// sc_render_target->WaitFence();
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
const VkExtent2D & SwapchainModule::GetSwapchainSize()const{return sc_render_target->GetExtent();}
|
||||||
|
|
||||||
|
IRenderTarget * SwapchainModule::AcquireNextImage()const{return sc_render_target->AcquireNextImage();}
|
||||||
|
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
@ -11,6 +11,7 @@ const VkFormatProperties TextureManager::GetFormatProperties(const VkFormat form
|
|||||||
|
|
||||||
GRAPH_MODULE_CONSTRUCT(TextureManager)
|
GRAPH_MODULE_CONSTRUCT(TextureManager)
|
||||||
{
|
{
|
||||||
|
auto dev=GetDevice();
|
||||||
auto phy_device=GetPhysicalDevice();
|
auto phy_device=GetPhysicalDevice();
|
||||||
|
|
||||||
texture_cmd_buf=dev->CreateTextureCommandBuffer(phy_device->GetDeviceName()+AnsiString(":TexCmdBuffer"));
|
texture_cmd_buf=dev->CreateTextureCommandBuffer(phy_device->GetDeviceName()+AnsiString(":TexCmdBuffer"));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user