Sfoglia il codice sorgente

Vulkan: Mapping a single face of a cubemap for rendering now works

BearishSun 9 anni fa
parent
commit
f0039a0815
1 ha cambiato i file con 20 aggiunte e 21 eliminazioni
  1. 20 21
      Source/BansheeVulkanRenderAPI/Source/BsVulkanTexture.cpp

+ 20 - 21
Source/BansheeVulkanRenderAPI/Source/BsVulkanTexture.cpp

@@ -182,31 +182,30 @@ namespace bs { namespace ct
 	{
 	{
 		VkImageViewType oldViewType = mImageViewCI.viewType;
 		VkImageViewType oldViewType = mImageViewCI.viewType;
 
 
-		if(surface.numArraySlices > 1)
+		switch (oldViewType)
 		{
 		{
-			switch (oldViewType)
+		case VK_IMAGE_VIEW_TYPE_CUBE:
+			if(surface.numArraySlices == 1)
+				mImageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D;
+			else if(surface.numArraySlices % 6 == 0)
 			{
 			{
-			case VK_IMAGE_VIEW_TYPE_1D:
+				if(surface.numArraySlices > 6)
+					mImageViewCI.viewType = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY;
+			}
+			else
+				mImageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D_ARRAY;
+			break;
+		case VK_IMAGE_VIEW_TYPE_1D:
+			if(surface.numArraySlices > 1)
 				mImageViewCI.viewType = VK_IMAGE_VIEW_TYPE_1D_ARRAY;
 				mImageViewCI.viewType = VK_IMAGE_VIEW_TYPE_1D_ARRAY;
-				break;
-			case VK_IMAGE_VIEW_TYPE_2D:
-			case VK_IMAGE_VIEW_TYPE_3D:
+			break;
+		case VK_IMAGE_VIEW_TYPE_2D:
+		case VK_IMAGE_VIEW_TYPE_3D:
+			if (surface.numArraySlices > 1)
 				mImageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D_ARRAY;
 				mImageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D_ARRAY;
-				break;
-			default:
-				break;
-			}
-		} 
-		else if(surface.numArraySlices > 6)
-		{
-			switch (oldViewType)
-			{
-			case VK_IMAGE_VIEW_TYPE_CUBE:
-				mImageViewCI.viewType = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY;
-				break;
-			default:
-				break;
-			}
+			break;
+		default:
+			break;
 		}
 		}
 
 
 		mImageViewCI.subresourceRange.aspectMask = aspectMask;
 		mImageViewCI.subresourceRange.aspectMask = aspectMask;