set(SG_INCLUDE_PATH ${ROOT_INCLUDE_PATH}/hgl/graph) SET(SG_TEXTURE_SOURCE ${SG_INCLUDE_PATH}/TextureLoader.h ${SG_INCLUDE_PATH}/Bitmap2DLoader.h TextureLoader.cpp Bitmap2DLoader.cpp) SOURCE_GROUP("Texture" FILES ${SG_TEXTURE_SOURCE}) SET(SG_VDM_SOURCE ${SG_INCLUDE_PATH}/VertexAttribDataAccess.h ${SG_INCLUDE_PATH}/VertexDataManager.h VertexDataManager.cpp) SOURCE_GROUP("VertexDataManager" FILES ${SG_VDM_SOURCE}) SET(SG_PRIMITIVE_SOURCE ${SG_INCLUDE_PATH}/VKPrimitive.h Vulkan/VKPrimitive.cpp Vulkan/VKPrimitiveData.cpp Vulkan/VKPrimitiveData.h ${SG_INCLUDE_PATH}/PrimitiveCreater.h PrimitiveCreater.cpp) SOURCE_GROUP("Primitive" FILES ${SG_PRIMITIVE_SOURCE}) SET(TILE_SOURCE ${SG_INCLUDE_PATH}/TileData.h TileData.cpp Vulkan/VKTileData.cpp Vulkan/VKTileFont.cpp) SOURCE_GROUP("Tile" FILES ${TILE_SOURCE}) SET(GEOMETRY_FILES ${SG_INCLUDE_PATH}/InlineGeometry.h #${SG_INCLUDE_PATH}/Mesh.h #${SG_INCLUDE_PATH}/Spline.h InlineGeometry.cpp #Mesh.cpp ) SOURCE_GROUP("Geometry" FILES ${GEOMETRY_FILES}) SET(LIGHT_FILES ${SG_INCLUDE_PATH}/Light.h ${SG_INCLUDE_PATH}/ShadowPolicy.h) source_group("Light" FILES ${LIGHT_FILES}) SET(SGM_HEADER_PATH ${SG_INCLUDE_PATH}/module) SET(SGM_SOURCE_PATH module) SET(GRAPH_MODULE_FILES ${SGM_HEADER_PATH}/GraphModule.h ${SGM_HEADER_PATH}/GraphModuleManager.h ${SGM_HEADER_PATH}/RenderPassManager.h ${SGM_HEADER_PATH}/TextureManager.h ${SGM_HEADER_PATH}/RenderTargetManager.h ${SGM_HEADER_PATH}/RenderModule.h ${SGM_HEADER_PATH}/SwapchainModule.h ${SGM_SOURCE_PATH}/GraphModule.cpp ${SGM_SOURCE_PATH}/GraphModuleManager.cpp ${SGM_SOURCE_PATH}/RenderPassManager.cpp ${SGM_SOURCE_PATH}/TextureManager.cpp ${SGM_SOURCE_PATH}/RenderTargetManager.cpp ${SGM_SOURCE_PATH}/SwapChainModule.cpp ) source_group("Framework\\Module" FILES ${GRAPH_MODULE_FILES}) SET(GRAPH_FRAMEWORK_FILES ${SG_INCLUDE_PATH}/RenderFramework.h RenderFramework.cpp CameraControl.cpp) source_group("Framework" FILES ${GRAPH_FRAMEWORK_FILES}) SET(SG_SCENE_SOURCE ${SG_INCLUDE_PATH}/Scene.h ${SG_INCLUDE_PATH}/SceneNodeAttributes.h ${SG_INCLUDE_PATH}/SceneNode.h ${SG_INCLUDE_PATH}/SceneMatrix.h ${SG_INCLUDE_PATH}/SceneOrient.h Scene/SceneNode.cpp Scene/SceneOrient.cpp Scene/SceneMatrix.cpp Scene/Scene.cpp ) SET(SG_RENDER_SOURCE ${SG_INCLUDE_PATH}/RenderNode.h ${SG_INCLUDE_PATH}/RenderList.h ${SG_INCLUDE_PATH}/MaterialRenderList.h ${SG_INCLUDE_PATH}/MaterialRenderMap.h # ${SG_INCLUDE_PATH}/ShadowPolicy.h ${SG_INCLUDE_PATH}/RenderTask.h ${SG_INCLUDE_PATH}/Renderer.h render/Renderer.cpp render/RenderNode.cpp render/RenderTask.cpp render/RenderList.cpp render/MaterialRenderList.cpp render/RenderAssignBuffer.h render/RenderAssignBuffer.cpp ) SOURCE_GROUP("Scene Graph\\Scene" FILES ${SG_SCENE_SOURCE}) SOURCE_GROUP("Scene Graph\\Render" FILES ${SG_RENDER_SOURCE}) SET(SCENE_GRAPH_FILES ${SG_SCENE_SOURCE} ${SG_RENDER_SOURCE}) SET(FONT_MANAGE_SOURCE ${SG_INCLUDE_PATH}/font/Font.h ${SG_INCLUDE_PATH}/font/FontManage.h font/Font.cpp) 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 ${SG_INCLUDE_PATH}/font/TileFont.h font/TileFont.cpp) SET(FONT_LAYOUT_SOURCE ${SG_INCLUDE_PATH}/font/TextLayout.h font/TextLayout.cpp) SET(TEXT_RENDERABLE_SOURCE ${SG_INCLUDE_PATH}/font/TextPrimitive.h ${SG_INCLUDE_PATH}/font/TextRender.h font/TextRender.cpp font/TextPrimitive.cpp) SOURCE_GROUP("Font" FILES ${FONT_MANAGE_SOURCE}) SOURCE_GROUP("Font\\Source" FILES ${FONT_SOURCE}) SOURCE_GROUP("Font\\TileFont" FILES ${TILE_FONT_SOURCE}) SOURCE_GROUP("Font\\Layout" FILES ${FONT_LAYOUT_SOURCE}) SOURCE_GROUP("Font\\Render" FILES ${TEXT_RENDERABLE_SOURCE}) IF(WIN32) SET(FONT_SOURCE_OS font/FontSourceWin.cpp font/FontSourceWin.h) SOURCE_GROUP("Font\\Source\\Windows" FILES ${FONT_SOURCE_OS}) ENDIF(WIN32) 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_RR_MATERIAL_FILES ${SG_INCLUDE_PATH}/VKMaterialDescriptorManager.h Vulkan/VKMaterialDescriptorManager.cpp) SOURCE_GROUP("Vulkan\\RenderResource\\Material" FILES ${VK_RR_MATERIAL_FILES}) SET(VK_INST_SOURCE ${SG_INCLUDE_PATH}/VKInstance.h Vulkan/VKInstance.cpp) SET(VK_DEBUG_SOURCE ${SG_INCLUDE_PATH}/VKDebugOut.h ${SG_INCLUDE_PATH}/VKDebugUtils.h Vulkan/Debug/VKDebugOut.cpp Vulkan/Debug/VKDebugUtils.cpp) SET(VK_MEMORY_SOURCE ${SG_INCLUDE_PATH}/VKMemory.h ${SG_INCLUDE_PATH}/VKMemoryAllocator.h ${SG_INCLUDE_PATH}/VKBuffer.h ${SG_INCLUDE_PATH}/VKIndexBuffer.h ${SG_INCLUDE_PATH}/VKArrayBuffer.h ${SG_INCLUDE_PATH}/VKBufferMap.h Vulkan/VKMemory.cpp Vulkan/VKMemoryAllocator.cpp Vulkan/VKBuffer.cpp Vulkan/VKArrayBuffer.cpp ) SET(VK_DEVICE_TEXTURE_SOURCE Vulkan/Texture/BufferImageCopy2D.h Vulkan/Texture/GenMipmaps.cpp Vulkan/Texture/VKDeviceTexture.cpp Vulkan/Texture/VKDeviceTexture2D.cpp Vulkan/Texture/VKDeviceTexture2DArray.cpp Vulkan/Texture/VKDeviceTextureCube.cpp) SET(VK_TEXTURE_LOADER_SOURCE ${SG_INCLUDE_PATH}/VKTextureCreateInfo.h Vulkan/Texture/VKTextureLoader.h Vulkan/Texture/VKTexture2DLoader.cpp Vulkan/Texture/VKTexture2DArrayLoader.cpp Vulkan/Texture/VKTextureCubeLoader.cpp) SET(VK_DEVICE_CREATER_SOURCE ${SG_INCLUDE_PATH}/VKDevice.h ${SG_INCLUDE_PATH}/VKDeviceAttribute.h ${SG_INCLUDE_PATH}/VKDeviceCreater.h Vulkan/VKDeviceAttribute.cpp Vulkan/VKDeviceCreater.cpp Vulkan/VKDevice.cpp) SET(VK_DEVICE_SOURCE Vulkan/VKDeviceMemory.cpp Vulkan/VKDeviceBuffer.cpp Vulkan/VKDeviceImage.cpp Vulkan/VKDeviceSampler.cpp Vulkan/VKDeviceMaterial.cpp Vulkan/VKDeviceFramebuffer.cpp) SET(VK_PHYSICAL_DEVICE_SOURCE ${SG_INCLUDE_PATH}/VKPhysicalDevice.h Vulkan/VKPhysicalDevice.cpp Vulkan/VKProperties.cpp Vulkan/DebugOutProperties.h Vulkan/Debug/VKPhysicalDeviceCapsOutput.cpp) SOURCE_GROUP("Vulkan\\Device" FILES ${VK_DEVICE_SOURCE}) SOURCE_GROUP("Vulkan\\Device\\Creater" FILES ${VK_DEVICE_CREATER_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}) SOURCE_GROUP("Vulkan\\Device\\Texture" FILES ${VK_DEVICE_TEXTURE_SOURCE}) SOURCE_GROUP("Vulkan\\Device\\Texture\\Loader" FILES ${VK_TEXTURE_LOADER_SOURCE}) SET(VK_DESCRIPTOR_SETS_SOURCE ${SG_INCLUDE_PATH}/VKDescriptorSet.h Vulkan/VKDescriptorSet.cpp Vulkan/VKPipelineLayoutData.h Vulkan/VKPipelineLayoutData.cpp) 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}/VKSampler.h Vulkan/VKSampler.cpp Vulkan/VKImageView.cpp Vulkan/VKTexture.cpp) SET(VK_MATERIAL_SOURCE ${SG_INCLUDE_PATH}/VKMaterial.h ${SG_INCLUDE_PATH}/VKMaterialParameters.h ${SG_INCLUDE_PATH}/VKMaterialInstance.h ${SG_INCLUDE_PATH}/VKDescriptorBindingManage.h ${SG_INCLUDE_PATH}/VKDynamicBufferAccess.h Vulkan/VKDescriptorBindingManage.cpp Vulkan/VKMaterial.cpp Vulkan/VKMaterialParameters.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_CONTEXT_SOURCE ${SG_INCLUDE_PATH}/VKRenderContext.h ${SG_INCLUDE_PATH}/VKSubpass.h Vulkan/VKSubpass.cpp Vulkan/VKRenderContext.cpp) SET(VK_RENDER_PASS_SOURCE ${SG_INCLUDE_PATH}/VKFramebuffer.h ${SG_INCLUDE_PATH}/VKPipeline.h ${SG_INCLUDE_PATH}/VKRenderPass.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/VKSubpass.cpp Vulkan/VKRenderPass.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 ${SG_INCLUDE_PATH}/VKIndirectCommandBuffer.h Vulkan/VKIndirectCommandBuffer.cpp Vulkan/VKCommandBuffer.cpp Vulkan/VKCommandBufferRender.cpp) SOURCE_GROUP("Vulkan\\Command Buffer" FILES ${VK_CMD_BUFFER_SOURCE}) SET(VK_MESH_SOURCE ${SG_INCLUDE_PATH}/Mesh.h Vulkan/Mesh.cpp) SOURCE_GROUP("Vulkan\\Mesh" FILES ${VK_MESH_SOURCE}) set(COMPONENT_INCLUDE_PATH ${ROOT_INCLUDE_PATH}/hgl/component) SET(COMPONENT_FILES ${COMPONENT_INCLUDE_PATH}/Component.h ${COMPONENT_INCLUDE_PATH}/SceneComponent.h ${COMPONENT_INCLUDE_PATH}/PrimitiveComponent.h ${COMPONENT_INCLUDE_PATH}/RenderComponent.h ${COMPONENT_INCLUDE_PATH}/StaticMeshComponent.h component/Component.cpp component/ComponentManager.cpp component/SceneComponent.cpp component/StaticMeshComponentManager.cpp ) SOURCE_GROUP("Component" FILES ${COMPONENT_FILES}) IF(WIN32) OPTION(FORCE_DISCETE_GPU "Force Discrete GPU" OFF) IF(FORCE_DISCETE_GPU) SET(RENDER_DEVICE_SOURCE ForceDiscreteGPU.c) ENDIF() SET(VULKAN_SURFACE_SOURCE Vulkan/Platform/WinVulkan.cpp) ENDIF(WIN32) IF(UNIX) IF(ANDROID) SET(VULKAN_SURFACE_SOURCE Vulkan/platform/AndroidVulkan.cpp) ELSE() 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() 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) SOURCE_GROUP("Vulkan\\Surface" FILES ${VULKAN_SURFACE_SOURCE}) SET(VULKAN_RENDER_SOURCE ${VK_RR_SOURCE} ${VK_RR_MATERIAL_FILES} ${VK_INST_SOURCE} ${VK_DEBUG_SOURCE} ${VK_MEMORY_SOURCE} ${VK_DEVICE_SOURCE} ${VK_DEVICE_CREATER_SOURCE} ${VK_DEVICE_TEXTURE_SOURCE} ${VK_TEXTURE_LOADER_SOURCE} ${VK_PHYSICAL_DEVICE_SOURCE} ${VK_DESCRIPTOR_SETS_SOURCE} ${VK_SHADER_SOURCE} ${VK_TEXTURE_SOURCE} ${VK_MATERIAL_SOURCE} ${VK_RENDER_PASS_SOURCE} ${VK_RENDER_TARGET_SOURCE} #${VK_RENDER_CONTEXT_SOURCE} ${VK_CMD_BUFFER_SOURCE} ${VK_MESH_SOURCE} ${VK_RENDER_DEVICE_SOURCE}) add_cm_library(ULRE.SceneGraph "ULRE" ${SCENE_GRAPH_FILES} ${SG_PRIMITIVE_SOURCE} ${GEOMETRY_FILES} ${LIGHT_FILES} ${GRAPH_MODULE_FILES} ${GRAPH_FRAMEWORK_FILES} ${SG_TEXTURE_SOURCE} ${TILE_SOURCE} ${SG_VDM_SOURCE} ${COMPONENT_FILES} # ${FONT_MANAGE_SOURCE} # ${FONT_SOURCE} # ${FONT_SOURCE_OS} # ${TILE_FONT_SOURCE} # ${FONT_LAYOUT_SOURCE} # ${TEXT_RENDERABLE_SOURCE} ${VULKAN_RENDER_SOURCE} ${VULKAN_SURFACE_SOURCE})