From 6a678287d01b3f06a88b297947109f644d8da493 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Thu, 26 Nov 2020 18:04:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86VulkanRender=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=A7=BB=E5=88=B0SceneGraph=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 1 - example/common/VulkanAppFramework.h | 20 +- src/CMakeLists.txt | 3 +- src/RenderDevice/CMakeLists.txt | 133 ------------- src/SceneGraph/CMakeLists.txt | 180 +++++++++++++++--- .../Vulkan}/ForceDiscreteGPU.c | 0 .../Vulkan}/VKBuffer.cpp | 0 .../Vulkan}/VKCommandBuffer.cpp | 0 .../Vulkan}/VKCommandBufferRender.cpp | 0 .../Vulkan}/VKDebugOut.cpp | 0 .../Vulkan}/VKDescriptorSetLayoutCreater.cpp | 0 .../Vulkan}/VKDescriptorSetLayoutCreater.h | 0 .../Vulkan}/VKDescriptorSets.cpp | 0 .../Vulkan}/VKDevice.cpp | 0 .../Vulkan}/VKDeviceAttribute.cpp | 0 .../Vulkan}/VKDeviceBuffer.cpp | 0 .../Vulkan}/VKDeviceCreater.cpp | 0 .../Vulkan}/VKDeviceFramebuffer.cpp | 0 .../Vulkan}/VKDeviceImage.cpp | 0 .../Vulkan}/VKDeviceRenderPass.cpp | 0 .../Vulkan}/VKDeviceRenderTarget.cpp | 0 .../Vulkan}/VKDeviceSwapchain.cpp | 0 .../Vulkan}/VKDeviceTexture.cpp | 0 .../Vulkan}/VKFence.cpp | 0 .../Vulkan}/VKFramebuffer.cpp | 0 .../Vulkan}/VKImageView.cpp | 0 .../Vulkan}/VKInstance.cpp | 0 .../Vulkan}/VKMaterial.cpp | 0 .../Vulkan}/VKMaterialInstance.cpp | 0 .../Vulkan}/VKMemory.cpp | 0 .../Vulkan}/VKPhysicalDevice.cpp | 0 .../Vulkan}/VKPipeline.cpp | 0 .../Vulkan}/VKPipelineCache.cpp | 0 .../Vulkan}/VKProperties.cpp | 0 .../Vulkan}/VKQueue.cpp | 0 .../Vulkan}/VKRenderPass.cpp | 0 .../Vulkan}/VKRenderResource.cpp | 0 .../Vulkan}/VKRenderResourceMaterial.cpp | 0 .../Vulkan}/VKRenderTarget.cpp | 0 .../Vulkan}/VKRenderTargetPipeline.cpp | 0 .../Vulkan}/VKRenderable.cpp | 0 .../Vulkan}/VKRenderableInstance.cpp | 0 .../Vulkan}/VKSampler.cpp | 0 .../Vulkan}/VKSemaphore.cpp | 0 .../Vulkan}/VKShaderModule.cpp | 0 .../Vulkan}/VKShaderModuleMap.cpp | 0 .../Vulkan}/VKSwapchain.cpp | 0 .../Vulkan}/VKSwapchainRenderTarget.cpp | 0 .../Vulkan}/VKTexture.cpp | 0 .../Vulkan}/VKTextureLoader.cpp | 0 .../Vulkan}/VKTileData.cpp | 0 .../Vulkan}/VKTileFont.cpp | 0 .../Vulkan}/VKVertexAttributeBinding.cpp | 0 53 files changed, 169 insertions(+), 168 deletions(-) delete mode 100644 src/RenderDevice/CMakeLists.txt rename src/{RenderDevice => SceneGraph/Vulkan}/ForceDiscreteGPU.c (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKBuffer.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKCommandBuffer.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKCommandBufferRender.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKDebugOut.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKDescriptorSetLayoutCreater.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKDescriptorSetLayoutCreater.h (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKDescriptorSets.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKDevice.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKDeviceAttribute.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKDeviceBuffer.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKDeviceCreater.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKDeviceFramebuffer.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKDeviceImage.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKDeviceRenderPass.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKDeviceRenderTarget.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKDeviceSwapchain.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKDeviceTexture.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKFence.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKFramebuffer.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKImageView.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKInstance.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKMaterial.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKMaterialInstance.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKMemory.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKPhysicalDevice.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKPipeline.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKPipelineCache.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKProperties.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKQueue.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKRenderPass.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKRenderResource.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKRenderResourceMaterial.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKRenderTarget.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKRenderTargetPipeline.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKRenderable.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKRenderableInstance.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKSampler.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKSemaphore.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKShaderModule.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKShaderModuleMap.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKSwapchain.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKSwapchainRenderTarget.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKTexture.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKTextureLoader.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKTileData.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKTileFont.cpp (100%) rename src/{RenderDevice => SceneGraph/Vulkan}/VKVertexAttributeBinding.cpp (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1aa69628..a7da9992 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,7 +34,6 @@ SET(ULRE CMCore CMAssetsManage CMSceneGraph ULRE.Util - ULRE.VulkanRender ULRE.SceneGraph MathGeoLib ${RENDER_LIBRARY} diff --git a/example/common/VulkanAppFramework.h b/example/common/VulkanAppFramework.h index 689d77ba..dfb70b40 100644 --- a/example/common/VulkanAppFramework.h +++ b/example/common/VulkanAppFramework.h @@ -311,29 +311,29 @@ public: public: /** - * 向前移动指定距离(延视线) - */ + * 向前移动指定距离(延视线) + */ virtual void Backward(const float move_length) { Move(camera_direction*move_length/view_distance.y); } /** - * 向后移动指定距离(延视线) - */ + * 向后移动指定距离(延视线) + */ virtual void Forward(const float move_length){Backward(-move_length);} /** - * 向上移动指定距离(和视线垂直90度) - */ + * 向上移动指定距离(和视线垂直90度) + */ virtual void Up(const float move_length) { Move(camera_up*move_length/view_distance.z); } /** - * 向下移动指定距离(和视线垂直90度) - */ + * 向下移动指定距离(和视线垂直90度) + */ virtual void Down(const float move_length){Up(-move_length);} virtual void Left(const float move_length) @@ -468,8 +468,8 @@ public: Vector2f gap=mouse_pos-mouse_last_pos; bool update=false; - if(gap.x!=0){update=true;if(mouse_key&mbLeft)camera->HoriRotate(-gap.x/10.0f);else camera->WrapHoriRotate(gap.x);} - if(gap.y!=0){update=true;if(mouse_key&mbLeft)camera->VertRotate( gap.y/10.0f);else camera->WrapVertRotate(gap.y);} + if(gap.x!=0){update=true;if(mouse_key&mbLeft)camera->HoriRotate( gap.x/10.0f);else camera->WrapHoriRotate(gap.x);} + if(gap.y!=0){update=true;if(mouse_key&mbLeft)camera->VertRotate(-gap.y/10.0f);else camera->WrapVertRotate(gap.y);} mouse_last_pos=mouse_pos; } diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f46c123a..43d3903f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,4 @@ add_subdirectory(Util) -add_subdirectory(RenderDevice) add_subdirectory(SceneGraph) #add_subdirectory(Tools) -add_subdirectory(GUI) \ No newline at end of file +add_subdirectory(GUI) diff --git a/src/RenderDevice/CMakeLists.txt b/src/RenderDevice/CMakeLists.txt deleted file mode 100644 index 359b8a18..00000000 --- a/src/RenderDevice/CMakeLists.txt +++ /dev/null @@ -1,133 +0,0 @@ -set(VK_INCLUDE_PATH ${ROOT_INCLUDE_PATH}/hgl/graph) - -SET(VK_RR_SOURCE ${VK_INCLUDE_PATH}/VKRenderResource.h - VKRenderResource.cpp - VKRenderResourceMaterial.cpp) - -SOURCE_GROUP("RenderResource" FILES ${VK_RR_SOURCE}) - -SET(VK_INST_SOURCE ${VK_INCLUDE_PATH}/VKInstance.h - VKInstance.cpp) - -SET(VK_DEBUG_SOURCE ${VK_INCLUDE_PATH}/VKDebugOut.h - VKDebugOut.cpp) - -SET(VK_MEMORY_SOURCE ${VK_INCLUDE_PATH}/VKMemory.h - ${VK_INCLUDE_PATH}/VKBuffer.h - VKMemory.cpp - VKBuffer.cpp) - -SET(VK_DEVICE_SOURCE ${VK_INCLUDE_PATH}/VKDevice.h - ${VK_INCLUDE_PATH}/VKDeviceAttribute.h - VKDeviceAttribute.cpp - VKDeviceCreater.cpp - VKDevice.cpp - VKDeviceBuffer.cpp - VKDeviceImage.cpp - VKDeviceTexture.cpp - VKDeviceFramebuffer.cpp - VKDeviceSwapchain.cpp - VKDeviceRenderPass.cpp - VKDeviceRenderTarget.cpp) - -SET(VK_PHYSICAL_DEVICE_SOURCE ${VK_INCLUDE_PATH}/VKPhysicalDevice.h - VKPhysicalDevice.cpp - VKProperties.cpp) - -SOURCE_GROUP("Device" FILES ${VK_DEVICE_SOURCE}) -SOURCE_GROUP("Device\\Debug" FILES ${VK_DEBUG_SOURCE}) -SOURCE_GROUP("Device\\Instance" FILES ${VK_INST_SOURCE}) -SOURCE_GROUP("Device\\Physical Device" FILES ${VK_PHYSICAL_DEVICE_SOURCE}) -SOURCE_GROUP("Device\\Memory" FILES ${VK_MEMORY_SOURCE}) - -SET(VK_DESCRIPTOR_SETS_SOURCE ${VK_INCLUDE_PATH}/VKDescriptorSets.h - VKDescriptorSets.cpp - VKDescriptorSetLayoutCreater.cpp - VKDescriptorSetLayoutCreater.h) - -SOURCE_GROUP("Descriptor Sets" FILES ${VK_DESCRIPTOR_SETS_SOURCE}) - -SET(VK_SHADER_SOURCE ${VK_INCLUDE_PATH}/VKShaderModule.h - ${VK_INCLUDE_PATH}/VKShaderModuleMap.h - VKShaderModuleMap.cpp - VKShaderModule.cpp) - -SET(VK_TEXTURE_SOURCE ${VK_INCLUDE_PATH}/VKImageView.h - ${VK_INCLUDE_PATH}/VKTexture.h - ${VK_INCLUDE_PATH}/VKTextureCreateInfo.h - ${VK_INCLUDE_PATH}/VKSampler.h - VKSampler.cpp - VKImageView.cpp - VKTexture.cpp - VKTextureLoader.cpp) - -SET(VK_MATERIAL_SOURCE ${VK_INCLUDE_PATH}/VKMaterial.h - ${VK_INCLUDE_PATH}/VKMaterialInstance.h - VKMaterial.cpp - VKMaterialInstance.cpp) - -SOURCE_GROUP("Material" FILES ${VK_MATERIAL_SOURCE}) -SOURCE_GROUP("Material\\Texture" FILES ${VK_TEXTURE_SOURCE}) -SOURCE_GROUP("Material\\Shader" FILES ${VK_SHADER_SOURCE}) - -SET(VK_RENDER_PASS_SOURCE ${VK_INCLUDE_PATH}/VKFramebuffer.h - ${VK_INCLUDE_PATH}/VKPipeline.h - ${VK_INCLUDE_PATH}/VKRenderPass.h - ${VK_INCLUDE_PATH}/VKRenderTarget.h - ${VK_INCLUDE_PATH}/VKSwapchain.h - ${VK_INCLUDE_PATH}/VKSemaphore.h - ${VK_INCLUDE_PATH}/VKFence.h - VKQueue.cpp - VKSemaphore.cpp - VKFence.cpp - VKFramebuffer.cpp - VKPipeline.cpp - VKPipelineCache.cpp - VKRenderPass.cpp - VKRenderTarget.cpp - VKRenderTargetPipeline.cpp - VKSwapchainRenderTarget.cpp - VKSwapchain.cpp - ) - -SOURCE_GROUP("Render Pass" FILES ${VK_RENDER_PASS_SOURCE}) - -SET(VK_CMD_BUFFER_SOURCE ${VK_INCLUDE_PATH}/VKCommandBuffer.h - VKCommandBuffer.cpp - VKCommandBufferRender.cpp) - -SOURCE_GROUP("Command Buffer" FILES ${VK_CMD_BUFFER_SOURCE}) - -SET(VK_RENDERABLE_SOURCE ${VK_INCLUDE_PATH}/VKVertexAttributeBinding.h - ${VK_INCLUDE_PATH}/VKRenderable.h - ${VK_INCLUDE_PATH}/VKRenderableInstance.h - VKVertexAttributeBinding.cpp - VKRenderable.cpp - VKRenderableInstance.cpp - VKTileData.cpp - VKTileFont.cpp) - -SOURCE_GROUP("Renderable" FILES ${VK_RENDERABLE_SOURCE}) - -IF(WIN32) - OPTION(FORCE_DISCETE_GPU "Force Discrete GPU" OFF) - - IF(FORCE_DISCETE_GPU) - SET(RENDER_DEVICE_SOURCE ForceDiscreteGPU.c) - ENDIF() -ENDIF(WIN32) - -add_cm_library(ULRE.VulkanRender "ULRE" ${VK_RR_SOURCE} - ${VK_INST_SOURCE} - ${VK_DEBUG_SOURCE} - ${VK_MEMORY_SOURCE} - ${VK_DEVICE_SOURCE} - ${VK_PHYSICAL_DEVICE_SOURCE} - ${VK_DESCRIPTOR_SETS_SOURCE} - ${VK_SHADER_SOURCE} - ${VK_TEXTURE_SOURCE} - ${VK_MATERIAL_SOURCE} - ${VK_RENDER_PASS_SOURCE} - ${VK_CMD_BUFFER_SOURCE} - ${VK_RENDERABLE_SOURCE} - ${VK_RENDER_DEVICE_SOURCE}) diff --git a/src/SceneGraph/CMakeLists.txt b/src/SceneGraph/CMakeLists.txt index 357acab3..1dc7ef30 100644 --- a/src/SceneGraph/CMakeLists.txt +++ b/src/SceneGraph/CMakeLists.txt @@ -1,7 +1,9 @@ -SET(SHADER_RESOURCE_FILES ${ROOT_INCLUDE_PATH}/hgl/graph/shader/ShaderResource.h +set(SG_INCLUDE_PATH ${ROOT_INCLUDE_PATH}/hgl/graph) + +SET(SHADER_RESOURCE_FILES ${SG_INCLUDE_PATH}/shader/ShaderResource.h shader/ShaderResource.cpp) -file(GLOB SG_MATERIAL_HEADER ${ROOT_INCLUDE_PATH}/hgl/graph/material/*.*) +file(GLOB SG_MATERIAL_HEADER ${SG_INCLUDE_PATH}/material/*.*) file(GLOB SG_MATERIAL_SOURCE material/*.*) @@ -10,30 +12,30 @@ SOURCE_GROUP("Material" FILES ${SG_MATERIAL_HEADER} SOURCE_GROUP("Material\\Shader" FILES ${SHADER_RESOURCE_FILES}) -SET(SG_TEXTURE_SOURCE ${ROOT_INCLUDE_PATH}/hgl/graph/TextureLoader.h +SET(SG_TEXTURE_SOURCE ${SG_INCLUDE_PATH}/TextureLoader.h Texture2DLoader.cpp) SOURCE_GROUP("Material\\Texture" FILES ${SG_TEXTURE_SOURCE}) -SET(SG_VAD_SOURCE ${ROOT_INCLUDE_PATH}/hgl/graph/VertexAttribData.h - ${ROOT_INCLUDE_PATH}/hgl/graph/VertexAttribDataAccess.h +SET(SG_VAD_SOURCE ${SG_INCLUDE_PATH}/VertexAttribData.h + ${SG_INCLUDE_PATH}/VertexAttribDataAccess.h VertexAttribData.cpp) SOURCE_GROUP("VertexAttribData" FILES ${SG_VAD_SOURCE}) -SET(TILE_SOURCE ${ROOT_INCLUDE_PATH}/hgl/graph/TileData.h +SET(TILE_SOURCE ${SG_INCLUDE_PATH}/TileData.h TileData.cpp) SOURCE_GROUP("Tile" FILES ${TILE_SOURCE}) -SET(SCENE_GRAPH_HEADER ${ROOT_INCLUDE_PATH}/hgl/graph/Light.h - ${ROOT_INCLUDE_PATH}/hgl/graph/SceneNode.h - ${ROOT_INCLUDE_PATH}/hgl/graph/SceneOrient.h - ${ROOT_INCLUDE_PATH}/hgl/graph/RenderList.h - ${ROOT_INCLUDE_PATH}/hgl/graph/InlineGeometry.h - #${ROOT_INCLUDE_PATH}/hgl/graph/Mesh.h - #${ROOT_INCLUDE_PATH}/hgl/graph/Material.h - #${ROOT_INCLUDE_PATH}/hgl/graph/Spline.h +SET(SCENE_GRAPH_HEADER ${SG_INCLUDE_PATH}/Light.h + ${SG_INCLUDE_PATH}/SceneNode.h + ${SG_INCLUDE_PATH}/SceneOrient.h + ${SG_INCLUDE_PATH}/RenderList.h + ${SG_INCLUDE_PATH}/InlineGeometry.h + #${SG_INCLUDE_PATH}/Mesh.h + #${SG_INCLUDE_PATH}/Material.h + #${SG_INCLUDE_PATH}/Spline.h ) SET(SCENE_GRAPH_SOURCE RenderList.cpp @@ -46,28 +48,28 @@ SET(SCENE_GRAPH_SOURCE RenderList.cpp #SceneFile.cpp ) -SET(RENDERABLE_FILES ${ROOT_INCLUDE_PATH}/hgl/graph/RenderableCreater.h +SET(RENDERABLE_FILES ${SG_INCLUDE_PATH}/RenderableCreater.h RenderableCreater.cpp) SOURCE_GROUP("Renderable" FILES ${RENDERABLE_FILES}) -SET(FONT_MANAGE_SOURCE ${ROOT_INCLUDE_PATH}/hgl/graph/font/Font.h - ${ROOT_INCLUDE_PATH}/hgl/graph/font/FontManage.h +SET(FONT_MANAGE_SOURCE ${SG_INCLUDE_PATH}/font/Font.h + ${SG_INCLUDE_PATH}/font/FontManage.h font/Font.cpp) -SET(FONT_SOURCE ${ROOT_INCLUDE_PATH}/hgl/graph/font/FontSource.h +SET(FONT_SOURCE ${SG_INCLUDE_PATH}/font/FontSource.h font/FontSource.cpp font/FontSourceSingle.cpp font/FontSourceMulti.cpp font/FontSourceManage.cpp) -SET(TILE_FONT_SOURCE ${ROOT_INCLUDE_PATH}/hgl/graph/font/TileFont.h +SET(TILE_FONT_SOURCE ${SG_INCLUDE_PATH}/font/TileFont.h font/TileFont.cpp) -SET(FONT_LAYOUT_SOURCE ${ROOT_INCLUDE_PATH}/hgl/graph/font/TextLayout.h +SET(FONT_LAYOUT_SOURCE ${SG_INCLUDE_PATH}/font/TextLayout.h font/TextLayout.cpp) -SET(TEXT_RENDERABLE_SOURCE ${ROOT_INCLUDE_PATH}/hgl/graph/font/TextRenderable.h +SET(TEXT_RENDERABLE_SOURCE ${SG_INCLUDE_PATH}/font/TextRenderable.h font/TextRenderable.cpp) SOURCE_GROUP("Font" FILES ${FONT_MANAGE_SOURCE}) @@ -85,6 +87,138 @@ ENDIF(WIN32) SOURCE_GROUP("Header Files" FILES ${SCENE_GRAPH_HEADER}) SOURCE_GROUP("Source Files" FILES ${SCENE_GRAPH_SOURCE}) +SET(VK_RR_SOURCE ${SG_INCLUDE_PATH}/VKRenderResource.h + Vulkan/VKRenderResource.cpp + Vulkan/VKRenderResourceMaterial.cpp) + +SOURCE_GROUP("Vulkan\\RenderResource" FILES ${VK_RR_SOURCE}) + +SET(VK_INST_SOURCE ${SG_INCLUDE_PATH}/VKInstance.h + Vulkan/VKInstance.cpp) + +SET(VK_DEBUG_SOURCE ${SG_INCLUDE_PATH}/VKDebugOut.h + Vulkan/VKDebugOut.cpp) + +SET(VK_MEMORY_SOURCE ${SG_INCLUDE_PATH}/VKMemory.h + ${SG_INCLUDE_PATH}/VKBuffer.h + Vulkan/VKMemory.cpp + Vulkan/VKBuffer.cpp) + +SET(VK_DEVICE_SOURCE ${SG_INCLUDE_PATH}/VKDevice.h + ${SG_INCLUDE_PATH}/VKDeviceAttribute.h + Vulkan/VKDeviceAttribute.cpp + Vulkan/VKDeviceCreater.cpp + Vulkan/VKDevice.cpp + Vulkan/VKDeviceBuffer.cpp + Vulkan/VKDeviceImage.cpp + Vulkan/VKDeviceTexture.cpp + Vulkan/VKDeviceFramebuffer.cpp + Vulkan/VKDeviceSwapchain.cpp + Vulkan/VKDeviceRenderPass.cpp + Vulkan/VKDeviceRenderTarget.cpp) + +SET(VK_PHYSICAL_DEVICE_SOURCE ${SG_INCLUDE_PATH}/VKPhysicalDevice.h + Vulkan/VKPhysicalDevice.cpp + Vulkan/VKProperties.cpp) + +SOURCE_GROUP("Vulkan\\Device" FILES ${VK_DEVICE_SOURCE}) +SOURCE_GROUP("Vulkan\\Device\\Debug" FILES ${VK_DEBUG_SOURCE}) +SOURCE_GROUP("Vulkan\\Device\\Instance" FILES ${VK_INST_SOURCE}) +SOURCE_GROUP("Vulkan\\Device\\Physical Device" FILES ${VK_PHYSICAL_DEVICE_SOURCE}) +SOURCE_GROUP("Vulkan\\Device\\Memory" FILES ${VK_MEMORY_SOURCE}) + +SET(VK_DESCRIPTOR_SETS_SOURCE ${SG_INCLUDE_PATH}/VKDescriptorSets.h + Vulkan/VKDescriptorSets.cpp + Vulkan/VKDescriptorSetLayoutCreater.cpp + Vulkan/VKDescriptorSetLayoutCreater.h) + +SOURCE_GROUP("Vulkan\\Descriptor Sets" FILES ${VK_DESCRIPTOR_SETS_SOURCE}) + +SET(VK_SHADER_SOURCE ${SG_INCLUDE_PATH}/VKShaderModule.h + ${SG_INCLUDE_PATH}/VKShaderModuleMap.h + Vulkan/VKShaderModuleMap.cpp + Vulkan/VKShaderModule.cpp) + +SET(VK_TEXTURE_SOURCE ${SG_INCLUDE_PATH}/VKImageView.h + ${SG_INCLUDE_PATH}/VKTexture.h + ${SG_INCLUDE_PATH}/VKTextureCreateInfo.h + ${SG_INCLUDE_PATH}/VKSampler.h + Vulkan/VKSampler.cpp + Vulkan/VKImageView.cpp + Vulkan/VKTexture.cpp + Vulkan/VKTextureLoader.cpp) + +SET(VK_MATERIAL_SOURCE ${SG_INCLUDE_PATH}/VKMaterial.h + ${SG_INCLUDE_PATH}/VKMaterialInstance.h + Vulkan/VKMaterial.cpp + Vulkan/VKMaterialInstance.cpp) + +SOURCE_GROUP("Vulkan\\Material" FILES ${VK_MATERIAL_SOURCE}) +SOURCE_GROUP("Vulkan\\Material\\Texture" FILES ${VK_TEXTURE_SOURCE}) +SOURCE_GROUP("Vulkan\\Material\\Shader" FILES ${VK_SHADER_SOURCE}) + +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 + Vulkan/VKQueue.cpp + Vulkan/VKSemaphore.cpp + Vulkan/VKFence.cpp + Vulkan/VKFramebuffer.cpp + Vulkan/VKPipeline.cpp + Vulkan/VKPipelineCache.cpp + Vulkan/VKRenderPass.cpp + Vulkan/VKRenderTarget.cpp + Vulkan/VKRenderTargetPipeline.cpp + Vulkan/VKSwapchainRenderTarget.cpp + Vulkan/VKSwapchain.cpp + ) + +SOURCE_GROUP("Vulkan\\Render Pass" FILES ${VK_RENDER_PASS_SOURCE}) + +SET(VK_CMD_BUFFER_SOURCE ${SG_INCLUDE_PATH}/VKCommandBuffer.h + Vulkan/VKCommandBuffer.cpp + Vulkan/VKCommandBufferRender.cpp) + +SOURCE_GROUP("Vulkan\\Command Buffer" FILES ${VK_CMD_BUFFER_SOURCE}) + +SET(VK_RENDERABLE_SOURCE ${SG_INCLUDE_PATH}/VKVertexAttributeBinding.h + ${SG_INCLUDE_PATH}/VKRenderable.h + ${SG_INCLUDE_PATH}/VKRenderableInstance.h + Vulkan/VKVertexAttributeBinding.cpp + Vulkan/VKRenderable.cpp + Vulkan/VKRenderableInstance.cpp + Vulkan/VKTileData.cpp + Vulkan/VKTileFont.cpp) + +SOURCE_GROUP("Vulkan\\Renderable" FILES ${VK_RENDERABLE_SOURCE}) + +IF(WIN32) + OPTION(FORCE_DISCETE_GPU "Force Discrete GPU" OFF) + + IF(FORCE_DISCETE_GPU) + SET(RENDER_DEVICE_SOURCE ForceDiscreteGPU.c) + ENDIF() +ENDIF(WIN32) + +SET(VULKAN_RENDER_SOURCE ${VK_RR_SOURCE} + ${VK_INST_SOURCE} + ${VK_DEBUG_SOURCE} + ${VK_MEMORY_SOURCE} + ${VK_DEVICE_SOURCE} + ${VK_PHYSICAL_DEVICE_SOURCE} + ${VK_DESCRIPTOR_SETS_SOURCE} + ${VK_SHADER_SOURCE} + ${VK_TEXTURE_SOURCE} + ${VK_MATERIAL_SOURCE} + ${VK_RENDER_PASS_SOURCE} + ${VK_CMD_BUFFER_SOURCE} + ${VK_RENDERABLE_SOURCE} + ${VK_RENDER_DEVICE_SOURCE}) + add_cm_library(ULRE.SceneGraph "ULRE" ${SCENE_GRAPH_HEADER} ${SCENE_GRAPH_SOURCE} @@ -103,4 +237,6 @@ add_cm_library(ULRE.SceneGraph "ULRE" ${SCENE_GRAPH_HEADER} ${FONT_SOURCE_OS} ${TILE_FONT_SOURCE} ${FONT_LAYOUT_SOURCE} - ${TEXT_RENDERABLE_SOURCE}) + ${TEXT_RENDERABLE_SOURCE} + + ${VULKAN_RENDER_SOURCE}) diff --git a/src/RenderDevice/ForceDiscreteGPU.c b/src/SceneGraph/Vulkan/ForceDiscreteGPU.c similarity index 100% rename from src/RenderDevice/ForceDiscreteGPU.c rename to src/SceneGraph/Vulkan/ForceDiscreteGPU.c diff --git a/src/RenderDevice/VKBuffer.cpp b/src/SceneGraph/Vulkan/VKBuffer.cpp similarity index 100% rename from src/RenderDevice/VKBuffer.cpp rename to src/SceneGraph/Vulkan/VKBuffer.cpp diff --git a/src/RenderDevice/VKCommandBuffer.cpp b/src/SceneGraph/Vulkan/VKCommandBuffer.cpp similarity index 100% rename from src/RenderDevice/VKCommandBuffer.cpp rename to src/SceneGraph/Vulkan/VKCommandBuffer.cpp diff --git a/src/RenderDevice/VKCommandBufferRender.cpp b/src/SceneGraph/Vulkan/VKCommandBufferRender.cpp similarity index 100% rename from src/RenderDevice/VKCommandBufferRender.cpp rename to src/SceneGraph/Vulkan/VKCommandBufferRender.cpp diff --git a/src/RenderDevice/VKDebugOut.cpp b/src/SceneGraph/Vulkan/VKDebugOut.cpp similarity index 100% rename from src/RenderDevice/VKDebugOut.cpp rename to src/SceneGraph/Vulkan/VKDebugOut.cpp diff --git a/src/RenderDevice/VKDescriptorSetLayoutCreater.cpp b/src/SceneGraph/Vulkan/VKDescriptorSetLayoutCreater.cpp similarity index 100% rename from src/RenderDevice/VKDescriptorSetLayoutCreater.cpp rename to src/SceneGraph/Vulkan/VKDescriptorSetLayoutCreater.cpp diff --git a/src/RenderDevice/VKDescriptorSetLayoutCreater.h b/src/SceneGraph/Vulkan/VKDescriptorSetLayoutCreater.h similarity index 100% rename from src/RenderDevice/VKDescriptorSetLayoutCreater.h rename to src/SceneGraph/Vulkan/VKDescriptorSetLayoutCreater.h diff --git a/src/RenderDevice/VKDescriptorSets.cpp b/src/SceneGraph/Vulkan/VKDescriptorSets.cpp similarity index 100% rename from src/RenderDevice/VKDescriptorSets.cpp rename to src/SceneGraph/Vulkan/VKDescriptorSets.cpp diff --git a/src/RenderDevice/VKDevice.cpp b/src/SceneGraph/Vulkan/VKDevice.cpp similarity index 100% rename from src/RenderDevice/VKDevice.cpp rename to src/SceneGraph/Vulkan/VKDevice.cpp diff --git a/src/RenderDevice/VKDeviceAttribute.cpp b/src/SceneGraph/Vulkan/VKDeviceAttribute.cpp similarity index 100% rename from src/RenderDevice/VKDeviceAttribute.cpp rename to src/SceneGraph/Vulkan/VKDeviceAttribute.cpp diff --git a/src/RenderDevice/VKDeviceBuffer.cpp b/src/SceneGraph/Vulkan/VKDeviceBuffer.cpp similarity index 100% rename from src/RenderDevice/VKDeviceBuffer.cpp rename to src/SceneGraph/Vulkan/VKDeviceBuffer.cpp diff --git a/src/RenderDevice/VKDeviceCreater.cpp b/src/SceneGraph/Vulkan/VKDeviceCreater.cpp similarity index 100% rename from src/RenderDevice/VKDeviceCreater.cpp rename to src/SceneGraph/Vulkan/VKDeviceCreater.cpp diff --git a/src/RenderDevice/VKDeviceFramebuffer.cpp b/src/SceneGraph/Vulkan/VKDeviceFramebuffer.cpp similarity index 100% rename from src/RenderDevice/VKDeviceFramebuffer.cpp rename to src/SceneGraph/Vulkan/VKDeviceFramebuffer.cpp diff --git a/src/RenderDevice/VKDeviceImage.cpp b/src/SceneGraph/Vulkan/VKDeviceImage.cpp similarity index 100% rename from src/RenderDevice/VKDeviceImage.cpp rename to src/SceneGraph/Vulkan/VKDeviceImage.cpp diff --git a/src/RenderDevice/VKDeviceRenderPass.cpp b/src/SceneGraph/Vulkan/VKDeviceRenderPass.cpp similarity index 100% rename from src/RenderDevice/VKDeviceRenderPass.cpp rename to src/SceneGraph/Vulkan/VKDeviceRenderPass.cpp diff --git a/src/RenderDevice/VKDeviceRenderTarget.cpp b/src/SceneGraph/Vulkan/VKDeviceRenderTarget.cpp similarity index 100% rename from src/RenderDevice/VKDeviceRenderTarget.cpp rename to src/SceneGraph/Vulkan/VKDeviceRenderTarget.cpp diff --git a/src/RenderDevice/VKDeviceSwapchain.cpp b/src/SceneGraph/Vulkan/VKDeviceSwapchain.cpp similarity index 100% rename from src/RenderDevice/VKDeviceSwapchain.cpp rename to src/SceneGraph/Vulkan/VKDeviceSwapchain.cpp diff --git a/src/RenderDevice/VKDeviceTexture.cpp b/src/SceneGraph/Vulkan/VKDeviceTexture.cpp similarity index 100% rename from src/RenderDevice/VKDeviceTexture.cpp rename to src/SceneGraph/Vulkan/VKDeviceTexture.cpp diff --git a/src/RenderDevice/VKFence.cpp b/src/SceneGraph/Vulkan/VKFence.cpp similarity index 100% rename from src/RenderDevice/VKFence.cpp rename to src/SceneGraph/Vulkan/VKFence.cpp diff --git a/src/RenderDevice/VKFramebuffer.cpp b/src/SceneGraph/Vulkan/VKFramebuffer.cpp similarity index 100% rename from src/RenderDevice/VKFramebuffer.cpp rename to src/SceneGraph/Vulkan/VKFramebuffer.cpp diff --git a/src/RenderDevice/VKImageView.cpp b/src/SceneGraph/Vulkan/VKImageView.cpp similarity index 100% rename from src/RenderDevice/VKImageView.cpp rename to src/SceneGraph/Vulkan/VKImageView.cpp diff --git a/src/RenderDevice/VKInstance.cpp b/src/SceneGraph/Vulkan/VKInstance.cpp similarity index 100% rename from src/RenderDevice/VKInstance.cpp rename to src/SceneGraph/Vulkan/VKInstance.cpp diff --git a/src/RenderDevice/VKMaterial.cpp b/src/SceneGraph/Vulkan/VKMaterial.cpp similarity index 100% rename from src/RenderDevice/VKMaterial.cpp rename to src/SceneGraph/Vulkan/VKMaterial.cpp diff --git a/src/RenderDevice/VKMaterialInstance.cpp b/src/SceneGraph/Vulkan/VKMaterialInstance.cpp similarity index 100% rename from src/RenderDevice/VKMaterialInstance.cpp rename to src/SceneGraph/Vulkan/VKMaterialInstance.cpp diff --git a/src/RenderDevice/VKMemory.cpp b/src/SceneGraph/Vulkan/VKMemory.cpp similarity index 100% rename from src/RenderDevice/VKMemory.cpp rename to src/SceneGraph/Vulkan/VKMemory.cpp diff --git a/src/RenderDevice/VKPhysicalDevice.cpp b/src/SceneGraph/Vulkan/VKPhysicalDevice.cpp similarity index 100% rename from src/RenderDevice/VKPhysicalDevice.cpp rename to src/SceneGraph/Vulkan/VKPhysicalDevice.cpp diff --git a/src/RenderDevice/VKPipeline.cpp b/src/SceneGraph/Vulkan/VKPipeline.cpp similarity index 100% rename from src/RenderDevice/VKPipeline.cpp rename to src/SceneGraph/Vulkan/VKPipeline.cpp diff --git a/src/RenderDevice/VKPipelineCache.cpp b/src/SceneGraph/Vulkan/VKPipelineCache.cpp similarity index 100% rename from src/RenderDevice/VKPipelineCache.cpp rename to src/SceneGraph/Vulkan/VKPipelineCache.cpp diff --git a/src/RenderDevice/VKProperties.cpp b/src/SceneGraph/Vulkan/VKProperties.cpp similarity index 100% rename from src/RenderDevice/VKProperties.cpp rename to src/SceneGraph/Vulkan/VKProperties.cpp diff --git a/src/RenderDevice/VKQueue.cpp b/src/SceneGraph/Vulkan/VKQueue.cpp similarity index 100% rename from src/RenderDevice/VKQueue.cpp rename to src/SceneGraph/Vulkan/VKQueue.cpp diff --git a/src/RenderDevice/VKRenderPass.cpp b/src/SceneGraph/Vulkan/VKRenderPass.cpp similarity index 100% rename from src/RenderDevice/VKRenderPass.cpp rename to src/SceneGraph/Vulkan/VKRenderPass.cpp diff --git a/src/RenderDevice/VKRenderResource.cpp b/src/SceneGraph/Vulkan/VKRenderResource.cpp similarity index 100% rename from src/RenderDevice/VKRenderResource.cpp rename to src/SceneGraph/Vulkan/VKRenderResource.cpp diff --git a/src/RenderDevice/VKRenderResourceMaterial.cpp b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp similarity index 100% rename from src/RenderDevice/VKRenderResourceMaterial.cpp rename to src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp diff --git a/src/RenderDevice/VKRenderTarget.cpp b/src/SceneGraph/Vulkan/VKRenderTarget.cpp similarity index 100% rename from src/RenderDevice/VKRenderTarget.cpp rename to src/SceneGraph/Vulkan/VKRenderTarget.cpp diff --git a/src/RenderDevice/VKRenderTargetPipeline.cpp b/src/SceneGraph/Vulkan/VKRenderTargetPipeline.cpp similarity index 100% rename from src/RenderDevice/VKRenderTargetPipeline.cpp rename to src/SceneGraph/Vulkan/VKRenderTargetPipeline.cpp diff --git a/src/RenderDevice/VKRenderable.cpp b/src/SceneGraph/Vulkan/VKRenderable.cpp similarity index 100% rename from src/RenderDevice/VKRenderable.cpp rename to src/SceneGraph/Vulkan/VKRenderable.cpp diff --git a/src/RenderDevice/VKRenderableInstance.cpp b/src/SceneGraph/Vulkan/VKRenderableInstance.cpp similarity index 100% rename from src/RenderDevice/VKRenderableInstance.cpp rename to src/SceneGraph/Vulkan/VKRenderableInstance.cpp diff --git a/src/RenderDevice/VKSampler.cpp b/src/SceneGraph/Vulkan/VKSampler.cpp similarity index 100% rename from src/RenderDevice/VKSampler.cpp rename to src/SceneGraph/Vulkan/VKSampler.cpp diff --git a/src/RenderDevice/VKSemaphore.cpp b/src/SceneGraph/Vulkan/VKSemaphore.cpp similarity index 100% rename from src/RenderDevice/VKSemaphore.cpp rename to src/SceneGraph/Vulkan/VKSemaphore.cpp diff --git a/src/RenderDevice/VKShaderModule.cpp b/src/SceneGraph/Vulkan/VKShaderModule.cpp similarity index 100% rename from src/RenderDevice/VKShaderModule.cpp rename to src/SceneGraph/Vulkan/VKShaderModule.cpp diff --git a/src/RenderDevice/VKShaderModuleMap.cpp b/src/SceneGraph/Vulkan/VKShaderModuleMap.cpp similarity index 100% rename from src/RenderDevice/VKShaderModuleMap.cpp rename to src/SceneGraph/Vulkan/VKShaderModuleMap.cpp diff --git a/src/RenderDevice/VKSwapchain.cpp b/src/SceneGraph/Vulkan/VKSwapchain.cpp similarity index 100% rename from src/RenderDevice/VKSwapchain.cpp rename to src/SceneGraph/Vulkan/VKSwapchain.cpp diff --git a/src/RenderDevice/VKSwapchainRenderTarget.cpp b/src/SceneGraph/Vulkan/VKSwapchainRenderTarget.cpp similarity index 100% rename from src/RenderDevice/VKSwapchainRenderTarget.cpp rename to src/SceneGraph/Vulkan/VKSwapchainRenderTarget.cpp diff --git a/src/RenderDevice/VKTexture.cpp b/src/SceneGraph/Vulkan/VKTexture.cpp similarity index 100% rename from src/RenderDevice/VKTexture.cpp rename to src/SceneGraph/Vulkan/VKTexture.cpp diff --git a/src/RenderDevice/VKTextureLoader.cpp b/src/SceneGraph/Vulkan/VKTextureLoader.cpp similarity index 100% rename from src/RenderDevice/VKTextureLoader.cpp rename to src/SceneGraph/Vulkan/VKTextureLoader.cpp diff --git a/src/RenderDevice/VKTileData.cpp b/src/SceneGraph/Vulkan/VKTileData.cpp similarity index 100% rename from src/RenderDevice/VKTileData.cpp rename to src/SceneGraph/Vulkan/VKTileData.cpp diff --git a/src/RenderDevice/VKTileFont.cpp b/src/SceneGraph/Vulkan/VKTileFont.cpp similarity index 100% rename from src/RenderDevice/VKTileFont.cpp rename to src/SceneGraph/Vulkan/VKTileFont.cpp diff --git a/src/RenderDevice/VKVertexAttributeBinding.cpp b/src/SceneGraph/Vulkan/VKVertexAttributeBinding.cpp similarity index 100% rename from src/RenderDevice/VKVertexAttributeBinding.cpp rename to src/SceneGraph/Vulkan/VKVertexAttributeBinding.cpp