From 967f03992f22e1dd63d2e10229275e0cb2c543b3 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Wed, 5 Jan 2022 18:20:48 +0800 Subject: [PATCH] added cube/cube array support at VKImageView.cpp --- CMSceneGraph | 2 +- inc/hgl/graph/VKDevice.h | 3 +++ src/SceneGraph/CMakeLists.txt | 3 ++- src/SceneGraph/Vulkan/VKImageView.cpp | 10 +++++++++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CMSceneGraph b/CMSceneGraph index 7c8a5888..26a383ee 160000 --- a/CMSceneGraph +++ b/CMSceneGraph @@ -1 +1 @@ -Subproject commit 7c8a5888a72d091e6bf6192226dec16d84d50245 +Subproject commit 26a383ee11a8f49b87ab7999110e3b9539202d37 diff --git a/inc/hgl/graph/VKDevice.h b/inc/hgl/graph/VKDevice.h index 82f9f9f6..ceebb25f 100644 --- a/inc/hgl/graph/VKDevice.h +++ b/inc/hgl/graph/VKDevice.h @@ -171,6 +171,9 @@ public: //Texture Texture2D *CreateTexture2D(TextureData *); Texture2D *CreateTexture2D(TextureCreateInfo *ci); + TextureCube *CreateTextureCube(TextureData *); + TextureCube *CreateTextureCube(TextureCreateInfo *ci); + void Clear(TextureCreateInfo *); bool ChangeTexture2D(Texture2D *,GPUBuffer *buf,const List &, VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); diff --git a/src/SceneGraph/CMakeLists.txt b/src/SceneGraph/CMakeLists.txt index d799c628..10e22492 100644 --- a/src/SceneGraph/CMakeLists.txt +++ b/src/SceneGraph/CMakeLists.txt @@ -116,7 +116,8 @@ SET(VK_MEMORY_SOURCE ${SG_INCLUDE_PATH}/VKMemory.h SET(VK_DEVICE_TEXTURE_SOURCE Vulkan/Texture/BufferImageCopy2D.h Vulkan/Texture/GenMipmaps2D.cpp Vulkan/Texture/VKDeviceTexture.cpp - Vulkan/Texture/VKDeviceTexture2D.cpp) + Vulkan/Texture/VKDeviceTexture2D.cpp + Vulkan/Texture/VKDeviceTextureCube.cpp) SET(VK_TEXTURE_LOADER_SOURCE ${SG_INCLUDE_PATH}/VKTextureCreateInfo.h Vulkan/Texture/VKTextureLoader.h diff --git a/src/SceneGraph/Vulkan/VKImageView.cpp b/src/SceneGraph/Vulkan/VKImageView.cpp index 587d365f..95606324 100644 --- a/src/SceneGraph/Vulkan/VKImageView.cpp +++ b/src/SceneGraph/Vulkan/VKImageView.cpp @@ -17,7 +17,15 @@ ImageView *CreateImageView(VkDevice device,VkImageViewType type,VkFormat format, iv_createinfo.subresourceRange.baseMipLevel =0; iv_createinfo.subresourceRange.levelCount =miplevel; iv_createinfo.subresourceRange.baseArrayLayer =0; - iv_createinfo.subresourceRange.layerCount =ext.depth; + + if(type==VK_IMAGE_VIEW_TYPE_CUBE) + iv_createinfo.subresourceRange.layerCount =6; + else + if(type==VK_IMAGE_VIEW_TYPE_CUBE_ARRAY) + iv_createinfo.subresourceRange.layerCount =6*ext.depth; + else + iv_createinfo.subresourceRange.layerCount =ext.depth; + if(aspectMask&VK_IMAGE_ASPECT_DEPTH_BIT) {