From 0706f2735462634a94e01b6d58f49fcf74ef3340 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Tue, 11 Mar 2025 23:51:05 +0800 Subject: [PATCH] slit RenderTarget, created VKRenderTargetData.h/.cpp, VKRenderTargetSingle.h/.cpp, VKRenderTargetMultiFrame.h, VKRenderTargetSwapchain.h --- inc/hgl/graph/VK.h | 7 +- inc/hgl/graph/VKRenderResource.h | 2 - inc/hgl/graph/VKRenderTarget.h | 232 ------------------ inc/hgl/graph/VKRenderTargetData.h | 32 +++ inc/hgl/graph/VKRenderTargetMultiFrame.h | 95 +++++++ inc/hgl/graph/VKRenderTargetSingle.h | 88 +++++++ inc/hgl/graph/VKRenderTargetSwapchain.h | 35 +++ src/CMakeLists.txt | 2 +- src/SceneGraph/CMakeLists.txt | 44 +++- src/SceneGraph/Vulkan/VKRenderTarget.cpp | 12 - src/SceneGraph/Vulkan/VKRenderTargetData.cpp | 17 ++ .../Vulkan/VKSwapchainRenderTarget.cpp | 2 +- src/SceneGraph/module/RenderTargetManager.cpp | 2 +- src/SceneGraph/module/SwapchainModule.cpp | 2 +- 14 files changed, 307 insertions(+), 265 deletions(-) create mode 100644 inc/hgl/graph/VKRenderTargetData.h create mode 100644 inc/hgl/graph/VKRenderTargetMultiFrame.h create mode 100644 inc/hgl/graph/VKRenderTargetSingle.h create mode 100644 inc/hgl/graph/VKRenderTargetSwapchain.h create mode 100644 src/SceneGraph/Vulkan/VKRenderTargetData.cpp diff --git a/inc/hgl/graph/VK.h b/inc/hgl/graph/VK.h index 007ad7ba..dcbbe923 100644 --- a/inc/hgl/graph/VK.h +++ b/inc/hgl/graph/VK.h @@ -1,5 +1,4 @@ -#ifndef HGL_GRAPH_VULKAN_INCLUDE -#define HGL_GRAPH_VULKAN_INCLUDE +#pragma once #include #include @@ -49,7 +48,7 @@ class Framebuffer; struct Swapchain; class IRenderTarget; class RenderTarget; -class MFRenderTarget; +class MultiFrameRenderTarget; class SwapchainRenderTarget; struct CopyBufferToImageInfo; @@ -192,5 +191,5 @@ inline void copy(VkExtent3D &e3d,const VkExtent2D &e2d,const uint32 depth=1) e3d.height =e2d.height; e3d.depth =depth; } + VK_NAMESPACE_END -#endif//HGL_GRAPH_VULKAN_INCLUDE diff --git a/inc/hgl/graph/VKRenderResource.h b/inc/hgl/graph/VKRenderResource.h index f95f9f7d..2504fafd 100644 --- a/inc/hgl/graph/VKRenderResource.h +++ b/inc/hgl/graph/VKRenderResource.h @@ -36,8 +36,6 @@ using RenderableID =int; using SamplerID =int; using StaticMeshID =int; -class VertexAttribData; - using ShaderModuleMapByName=ObjectMap; constexpr const size_t VK_SHADER_STAGE_TYPE_COUNT=20;//GetBitOffset((uint32_t)VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI)+1; diff --git a/inc/hgl/graph/VKRenderTarget.h b/inc/hgl/graph/VKRenderTarget.h index 0ca4d9df..01d0560b 100644 --- a/inc/hgl/graph/VKRenderTarget.h +++ b/inc/hgl/graph/VKRenderTarget.h @@ -16,16 +16,6 @@ class RenderFramework; using UBOViewportInfo=DeviceBufferMap; -/** -* RenderTarget 存在几种情况: -* -* 1.正常单帧渲染目标,即只有一帧的数据,每次渲染都是当前帧 -* -* 2.多帧渲染目标,即有多帧数据,每次渲染都是指定帧,典型的是Swapchain -* -* 所以RenderTarget的其实是一个多态类,根据不同的情况,有不同的实现 -*/ - class IRenderTarget { RenderFramework *render_framework; @@ -89,226 +79,4 @@ public: } };//class IRenderTarget -struct RenderTargetData -{ - Framebuffer * fbo; - DeviceQueue * queue; - Semaphore * render_complete_semaphore; - - RenderCmdBuffer * cmd_buf; - - uint32_t color_count; ///<颜色成分数量 - Texture2D ** color_textures; ///<颜色成分纹理列表 - Texture2D * depth_texture; ///<深度成分纹理 - -public: - - Texture2D *GetColorTexture(const uint32_t index) - { - if(index>=color_count) - return(nullptr); - - return color_textures[index]; - } - - virtual void Clear(); -};//struct RenderTargetData - -/** - * 单帧渲染目标 - */ -class RenderTarget:public IRenderTarget -{ - RenderTargetData *data; - -protected: - - friend class SwapchainModule; - friend class RenderTargetManager; - - RenderTarget(RenderFramework *rf,RenderTargetData *rtd):IRenderTarget(rf,rtd->fbo->GetExtent()) - { - data=rtd; - - data->cmd_buf->SetDescriptorBinding(GetDescriptorBinding()); - } - -public: - - virtual ~RenderTarget() override - { - if(data) - { - data->Clear(); - delete data; - } - } - - Framebuffer * GetFramebuffer ()override{return data->fbo;} - RenderPass * GetRenderPass ()override{return data->fbo->GetRenderPass();} - - uint32_t GetColorCount ()override{return data->color_count;} - - bool hasDepth ()override{return data->depth_texture;} - - Texture2D * GetColorTexture (const int index=0) override{return data->GetColorTexture(index);} - Texture2D * GetDepthTexture () override{return data->depth_texture;} - -public: // Command Buffer - - DeviceQueue * GetQueue ()override{return data->queue;} - Semaphore * GetRenderCompleteSemaphore()override{return data->render_complete_semaphore;} - - RenderCmdBuffer * GetRenderCmdBuffer ()override{return data->cmd_buf;} - - virtual bool Submit (Semaphore *wait_sem)override - { - if(!data) - return(false); - - return data->queue->Submit(data->cmd_buf,wait_sem,data->render_complete_semaphore); - } - - bool WaitQueue ()override{return data->queue->WaitQueue();} - bool WaitFence ()override{return data->queue->WaitFence();} - -public: - - virtual RenderCmdBuffer *BeginRender()override - { - if(!data->cmd_buf) - return(nullptr); - - data->cmd_buf->Begin(); - data->cmd_buf->SetDescriptorBinding(GetDescriptorBinding()); - data->cmd_buf->BindFramebuffer(data->fbo); - return data->cmd_buf; - } - - virtual void EndRender() override - { - if(!data->cmd_buf) - return; - - data->cmd_buf->End(); - } -};//class RenderTarget - -/** -* 多帧渲染目标 -*/ -class MFRenderTarget:public IRenderTarget -{ -protected: - - uint32_t frame_number; - uint32_t current_frame; - - RenderTarget **rt_list; - -protected: - - friend class RenderTargetManager; - - MFRenderTarget(RenderFramework *rf,const uint32_t fn,RenderTarget **rtl):IRenderTarget(rf,rtl[0]->GetFramebuffer()->GetExtent()) - { - frame_number=fn; - current_frame=0; - - rt_list=rtl; - } - -public: - - virtual ~MFRenderTarget() override - { - SAFE_CLEAR_OBJECT_ARRAY_OBJECT(rt_list,frame_number); - } - - virtual void NextFrame() - { - ++current_frame; - - if(current_frame>=frame_number) - current_frame=0; - } - - uint32_t GetCurrentFrameIndices ()const{return current_frame;} - uint32_t GetFrameCount ()const{return frame_number;} - RenderTarget * GetCurrentFrameRenderTarget (){return rt_list[current_frame];} - -public: - - Framebuffer * GetFramebuffer ()override{return rt_list[current_frame]->GetFramebuffer();} - RenderPass * GetRenderPass ()override{return rt_list[current_frame]->GetRenderPass();} - - uint32_t GetColorCount ()override{return rt_list[current_frame]->GetColorCount();} - - Texture2D * GetColorTexture (const int index=0) override{return rt_list[current_frame]->GetColorTexture(index);} - Texture2D * GetDepthTexture () override{return rt_list[current_frame]->GetDepthTexture();} - - - bool hasDepth ()override{return rt_list[current_frame]->hasDepth();} - -public: // Command Buffer - - DeviceQueue * GetQueue ()override{return rt_list[current_frame]->GetQueue();} - Semaphore * GetRenderCompleteSemaphore()override{return rt_list[current_frame]->GetRenderCompleteSemaphore();} - RenderCmdBuffer * GetRenderCmdBuffer ()override{return rt_list[current_frame]->GetRenderCmdBuffer();} - - Framebuffer * GetFramebuffer (const uint32_t index){return rt_list[index]->GetFramebuffer();} - RenderCmdBuffer * GetRenderCmdBuffer (const uint32_t index){return rt_list[index]->GetRenderCmdBuffer();} - - virtual bool Submit ()override{return rt_list[current_frame]->Submit(nullptr);} - - virtual bool Submit (Semaphore *wait_sem) override - { - return rt_list[current_frame]->Submit(wait_sem); - } - - bool WaitQueue ()override{return rt_list[current_frame]->WaitQueue();} - bool WaitFence ()override{return rt_list[current_frame]->WaitFence();} - -public: - - virtual RenderCmdBuffer *BeginRender()override - { - //std::cout<<"Begin Render frame="<BeginRender(); - } - - virtual void EndRender() override - { - //std::cout<<"End Render frame="<EndRender(); - } -};//class MFRenderTarget - -/** - * 交换链专用渲染目标 - */ -class SwapchainRenderTarget:public MFRenderTarget -{ - Swapchain *swapchain; - PresentInfo present_info; - - Semaphore *present_complete_semaphore=nullptr; - -private: - - SwapchainRenderTarget(RenderFramework *rf,Swapchain *sc,Semaphore *pcs,RenderTarget **rtl); - - friend class SwapchainModule; - friend class RenderTargetManager; - -public: - - ~SwapchainRenderTarget() override; - -public: - - IRenderTarget *AcquireNextImage(); ///<获取下一帧的索引 - - bool Submit()override; ///<提交当前帧的渲染,交推送到前台 -};//class SwapchainRenderTarget:public RenderTarget VK_NAMESPACE_END diff --git a/inc/hgl/graph/VKRenderTargetData.h b/inc/hgl/graph/VKRenderTargetData.h new file mode 100644 index 00000000..ccccf5db --- /dev/null +++ b/inc/hgl/graph/VKRenderTargetData.h @@ -0,0 +1,32 @@ +#pragma once + +#include + +VK_NAMESPACE_BEGIN + +struct RenderTargetData +{ + Framebuffer * fbo; + DeviceQueue * queue; + Semaphore * render_complete_semaphore; + + RenderCmdBuffer * cmd_buf; + + uint32_t color_count; ///<颜色成分数量 + Texture2D ** color_textures; ///<颜色成分纹理列表 + Texture2D * depth_texture; ///<深度成分纹理 + +public: + + Texture2D *GetColorTexture(const uint32_t index) + { + if(index>=color_count) + return(nullptr); + + return color_textures[index]; + } + + virtual void Clear(); +};//struct RenderTargetData + +VK_NAMESPACE_END diff --git a/inc/hgl/graph/VKRenderTargetMultiFrame.h b/inc/hgl/graph/VKRenderTargetMultiFrame.h new file mode 100644 index 00000000..8974341c --- /dev/null +++ b/inc/hgl/graph/VKRenderTargetMultiFrame.h @@ -0,0 +1,95 @@ +#pragma once + +#include +#include + +VK_NAMESPACE_BEGIN + +/** +* 多帧渲染目标 +*/ +class MultiFrameRenderTarget:public IRenderTarget +{ +protected: + + uint32_t frame_number; + uint32_t current_frame; + + RenderTargetData *rtd_list; + +protected: + + friend class RenderTargetManager; + + MultiFrameRenderTarget(RenderFramework *rf,const uint32_t fn,RenderTargetData *rtl):IRenderTarget(rf,rtl[0].fbo->GetExtent()) + { + frame_number=fn; + current_frame=0; + + rtd_list=rtl; + } + +public: + + virtual ~MultiFrameRenderTarget() override; + + virtual void NextFrame() + { + ++current_frame; + + if(current_frame>=frame_number) + current_frame=0; + } + + uint32_t GetCurrentFrameIndices ()const{return current_frame;} + uint32_t GetFrameCount ()const{return frame_number;} + RenderTarget * GetCurrentFrameRenderTarget (){return rt_list[current_frame];} + +public: + + Framebuffer * GetFramebuffer ()override{return rt_list[current_frame]->GetFramebuffer();} + RenderPass * GetRenderPass ()override{return rt_list[current_frame]->GetRenderPass();} + + uint32_t GetColorCount ()override{return rt_list[current_frame]->GetColorCount();} + + Texture2D * GetColorTexture (const int index=0) override{return rt_list[current_frame]->GetColorTexture(index);} + Texture2D * GetDepthTexture () override{return rt_list[current_frame]->GetDepthTexture();} + + + bool hasDepth ()override{return rt_list[current_frame]->hasDepth();} + +public: // Command Buffer + + DeviceQueue * GetQueue ()override{return rt_list[current_frame]->GetQueue();} + Semaphore * GetRenderCompleteSemaphore()override{return rt_list[current_frame]->GetRenderCompleteSemaphore();} + RenderCmdBuffer * GetRenderCmdBuffer ()override{return rt_list[current_frame]->GetRenderCmdBuffer();} + + Framebuffer * GetFramebuffer (const uint32_t index){return rt_list[index]->GetFramebuffer();} + RenderCmdBuffer * GetRenderCmdBuffer (const uint32_t index){return rt_list[index]->GetRenderCmdBuffer();} + + virtual bool Submit ()override{return rt_list[current_frame]->Submit(nullptr);} + + virtual bool Submit (Semaphore *wait_sem) override + { + return rt_list[current_frame]->Submit(wait_sem); + } + + bool WaitQueue ()override{return rt_list[current_frame]->WaitQueue();} + bool WaitFence ()override{return rt_list[current_frame]->WaitFence();} + +public: + + virtual RenderCmdBuffer *BeginRender()override + { + //std::cout<<"Begin Render frame="<BeginRender(); + } + + virtual void EndRender() override + { + //std::cout<<"End Render frame="<EndRender(); + } +};//class MultiFrameRenderTarget + +VK_NAMESPACE_END diff --git a/inc/hgl/graph/VKRenderTargetSingle.h b/inc/hgl/graph/VKRenderTargetSingle.h new file mode 100644 index 00000000..3db86131 --- /dev/null +++ b/inc/hgl/graph/VKRenderTargetSingle.h @@ -0,0 +1,88 @@ +#pragma once + +#include +#include + +VK_NAMESPACE_BEGIN + +/** + * 单帧渲染目标 + */ +class RenderTarget:public IRenderTarget +{ + RenderTargetData *data; + +protected: + + friend class SwapchainModule; + friend class RenderTargetManager; + + RenderTarget(RenderFramework *rf,RenderTargetData *rtd):IRenderTarget(rf,rtd->fbo->GetExtent()) + { + data=rtd; + + data->cmd_buf->SetDescriptorBinding(GetDescriptorBinding()); + } + +public: + + virtual ~RenderTarget() override + { + if(data) + { + data->Clear(); + delete data; + } + } + + Framebuffer * GetFramebuffer ()override{return data->fbo;} + RenderPass * GetRenderPass ()override{return data->fbo->GetRenderPass();} + + uint32_t GetColorCount ()override{return data->color_count;} + + bool hasDepth ()override{return data->depth_texture;} + + Texture2D * GetColorTexture (const int index=0) override{return data->GetColorTexture(index);} + Texture2D * GetDepthTexture () override{return data->depth_texture;} + +public: // Command Buffer + + DeviceQueue * GetQueue ()override{return data->queue;} + Semaphore * GetRenderCompleteSemaphore()override{return data->render_complete_semaphore;} + + RenderCmdBuffer * GetRenderCmdBuffer ()override{return data->cmd_buf;} + + virtual bool Submit (Semaphore *wait_sem)override + { + if(!data) + return(false); + + return data->queue->Submit(data->cmd_buf,wait_sem,data->render_complete_semaphore); + } + + bool WaitQueue ()override{return data->queue->WaitQueue();} + bool WaitFence ()override{return data->queue->WaitFence();} + +public: + + virtual RenderCmdBuffer *BeginRender()override + { + if(!data->cmd_buf) + return(nullptr); + + data->cmd_buf->Begin(); + data->cmd_buf->SetDescriptorBinding(GetDescriptorBinding()); + data->cmd_buf->BindFramebuffer(data->fbo); + return data->cmd_buf; + } + + virtual void EndRender() override + { + if(!data->cmd_buf) + return; + + data->cmd_buf->End(); + } +};//class RenderTarget + +VK_NAMESPACE_END diff --git a/inc/hgl/graph/VKRenderTargetSwapchain.h b/inc/hgl/graph/VKRenderTargetSwapchain.h new file mode 100644 index 00000000..854a3576 --- /dev/null +++ b/inc/hgl/graph/VKRenderTargetSwapchain.h @@ -0,0 +1,35 @@ +#pragma once + +#include + +VK_NAMESPACE_BEGIN + +/** +* 交换链专用渲染目标 +*/ +class SwapchainRenderTarget:public MultiFrameRenderTarget +{ + Swapchain *swapchain; + PresentInfo present_info; + + Semaphore *present_complete_semaphore=nullptr; + +private: + + SwapchainRenderTarget(RenderFramework *rf,Swapchain *sc,Semaphore *pcs,RenderTarget **rtl); + + friend class SwapchainModule; + friend class RenderTargetManager; + +public: + + ~SwapchainRenderTarget() override; + +public: + + IRenderTarget *AcquireNextImage(); ///<获取下一帧的索引 + + bool Submit()override; ///<提交当前帧的渲染,交推送到前台 +};//class SwapchainRenderTarget:public MultiFrameRenderTarget + +VK_NAMESPACE_END diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ad2965a8..79da7b53 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,4 +4,4 @@ add_subdirectory(SceneGraph) add_subdirectory(Work) #add_subdirectory(Tools) #add_subdirectory(GUI) -add_subdirectory(JoltPhysics/Build) +#add_subdirectory(JoltPhysics/Build) diff --git a/src/SceneGraph/CMakeLists.txt b/src/SceneGraph/CMakeLists.txt index 1cf1bbd2..8a8f10b3 100644 --- a/src/SceneGraph/CMakeLists.txt +++ b/src/SceneGraph/CMakeLists.txt @@ -247,7 +247,6 @@ SET(VK_RENDER_CONTEXT_SOURCE ${SG_INCLUDE_PATH}/VKRenderContext.h SET(VK_RENDER_PASS_SOURCE ${SG_INCLUDE_PATH}/VKFramebuffer.h ${SG_INCLUDE_PATH}/VKPipeline.h ${SG_INCLUDE_PATH}/VKRenderPass.h - ${SG_INCLUDE_PATH}/VKRenderTarget.h ${SG_INCLUDE_PATH}/VKSwapchain.h ${SG_INCLUDE_PATH}/VKSemaphore.h ${SG_INCLUDE_PATH}/VKFence.h @@ -259,13 +258,23 @@ SET(VK_RENDER_PASS_SOURCE ${SG_INCLUDE_PATH}/VKFramebuffer.h Vulkan/VKPipelineCache.cpp #Vulkan/VKSubpass.cpp Vulkan/VKRenderPass.cpp - Vulkan/VKRenderTarget.cpp - Vulkan/VKSwapchainRenderTarget.cpp Vulkan/VKSwapchain.cpp ) SOURCE_GROUP("Vulkan\\Render Pass" FILES ${VK_RENDER_PASS_SOURCE}) +SET(VK_RENDER_TARGET_SOURCE ${SG_INCLUDE_PATH}/VKRenderTarget.h + ${SG_INCLUDE_PATH}/VKRenderTargetData.h + ${SG_INCLUDE_PATH}/VKRenderTargetSingle.h + ${SG_INCLUDE_PATH}/VKRenderTargetMultiFrame.h + ${SG_INCLUDE_PATH}/VKRenderTargetSwapchain.h + Vulkan/VKRenderTarget.cpp + Vulkan/VKRenderTargetData.cpp + Vulkan/VKSwapchainRenderTarget.cpp +) + +SOURCE_GROUP("Vulkan\\Render Target" FILES ${VK_RENDER_TARGET_SOURCE}) + SOURCE_GROUP("Vulkan\\Render Context" FILES ${VK_RENDER_CONTEXT_SOURCE}) SET(VK_CMD_BUFFER_SOURCE ${SG_INCLUDE_PATH}/VKCommandBuffer.h @@ -296,17 +305,29 @@ ENDIF(WIN32) IF(UNIX) IF(ANDROID) - SET(VULKAN_SURFACE_SOURCE Vulkan/Platform/AndroidVulkan.cpp) + SET(VULKAN_SURFACE_SOURCE Vulkan/platform/AndroidVulkan.cpp) ELSE() - IF(APPLE) - - - + IF(APPLE) + if(CMAKE_SYSTEM_NAME STREQUAL "iOS" OR CMAKE_OSX_SYSROOT MATCHES ".*iPhone.*") + message(STATUS "Targeting iOS") + set(VULKAN_SURFACE_SOURCE Vulkan/platform/iOSVulkan.cpp) + elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_OSX_SYSROOT MATCHES ".*MacOSX.*") + message(STATUS "Targeting macOS") + set(VULKAN_SURFACE_SOURCE Vulkan/platform/MacVulkan.cpp) + else() + message(FATAL_ERROR "Unknown Apple platform") + endif() ELSE() - - SET(VULKAN_SURFACE_SOURCE Vulkan/Platform/XCBVulkan.cpp) + find_package(PkgConfig REQUIRED) + pkg_check_modules(WAYLAND_CLIENT wayland-client) + if(WAYLAND_CLIENT_FOUND) + message(STATUS "Targeting Wayland") + set(VULKAN_SURFACE_SOURCE Vulkan/platform/WaylandVulkan.cpp) + else() + message(STATUS "Targeting XCB") + set(VULKAN_SURFACE_SOURCE Vulkan/platform/XCBVulkan.cpp) + endif() ENDIF() - ENDIF() ENDIF(UNIX) @@ -328,6 +349,7 @@ SET(VULKAN_RENDER_SOURCE ${VK_RR_SOURCE} ${VK_TEXTURE_SOURCE} ${VK_MATERIAL_SOURCE} ${VK_RENDER_PASS_SOURCE} + ${VK_RENDER_TARGET_SOURCE} #${VK_RENDER_CONTEXT_SOURCE} ${VK_CMD_BUFFER_SOURCE} ${VK_RENDERABLE_SOURCE} diff --git a/src/SceneGraph/Vulkan/VKRenderTarget.cpp b/src/SceneGraph/Vulkan/VKRenderTarget.cpp index b00dc512..c5331329 100644 --- a/src/SceneGraph/Vulkan/VKRenderTarget.cpp +++ b/src/SceneGraph/Vulkan/VKRenderTarget.cpp @@ -1,7 +1,4 @@ #include -#include -#include -#include #include #include @@ -37,13 +34,4 @@ void IRenderTarget::OnResize(const VkExtent2D &ext) ubo_vp_info->Update(); } -void RenderTargetData::Clear() -{ - SAFE_CLEAR(queue); - SAFE_CLEAR(render_complete_semaphore); - SAFE_CLEAR(fbo); - SAFE_CLEAR_OBJECT_ARRAY_OBJECT(color_textures,color_count); - SAFE_CLEAR(depth_texture); -} - VK_NAMESPACE_END diff --git a/src/SceneGraph/Vulkan/VKRenderTargetData.cpp b/src/SceneGraph/Vulkan/VKRenderTargetData.cpp new file mode 100644 index 00000000..508ad10e --- /dev/null +++ b/src/SceneGraph/Vulkan/VKRenderTargetData.cpp @@ -0,0 +1,17 @@ +#include +#include +#include +#include + +VK_NAMESPACE_BEGIN + +void RenderTargetData::Clear() +{ + SAFE_CLEAR(queue); + SAFE_CLEAR(render_complete_semaphore); + SAFE_CLEAR(fbo); + SAFE_CLEAR_OBJECT_ARRAY_OBJECT(color_textures,color_count); + SAFE_CLEAR(depth_texture); +} + +VK_NAMESPACE_END diff --git a/src/SceneGraph/Vulkan/VKSwapchainRenderTarget.cpp b/src/SceneGraph/Vulkan/VKSwapchainRenderTarget.cpp index 09ff4588..0b5fd904 100644 --- a/src/SceneGraph/Vulkan/VKSwapchainRenderTarget.cpp +++ b/src/SceneGraph/Vulkan/VKSwapchainRenderTarget.cpp @@ -4,7 +4,7 @@ //#include VK_NAMESPACE_BEGIN -SwapchainRenderTarget::SwapchainRenderTarget(RenderFramework *rf,Swapchain *sc,Semaphore *pcs,RenderTarget **rtl):MFRenderTarget(rf,sc->image_count,rtl) +SwapchainRenderTarget::SwapchainRenderTarget(RenderFramework *rf,Swapchain *sc,Semaphore *pcs,RenderTarget **rtl):MultiFrameRenderTarget(rf,sc->image_count,rtl) { swapchain=sc; diff --git a/src/SceneGraph/module/RenderTargetManager.cpp b/src/SceneGraph/module/RenderTargetManager.cpp index 40112f31..36fd4855 100644 --- a/src/SceneGraph/module/RenderTargetManager.cpp +++ b/src/SceneGraph/module/RenderTargetManager.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include #include #include diff --git a/src/SceneGraph/module/SwapchainModule.cpp b/src/SceneGraph/module/SwapchainModule.cpp index f38d47bb..27691058 100644 --- a/src/SceneGraph/module/SwapchainModule.cpp +++ b/src/SceneGraph/module/SwapchainModule.cpp @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #include