diff --git a/data/textures/darkmetal_astc_8x8_unorm.ktx b/data/textures/darkmetal_astc_8x8_unorm.ktx new file mode 100644 index 00000000..88d20d46 Binary files /dev/null and b/data/textures/darkmetal_astc_8x8_unorm.ktx differ diff --git a/data/textures/darkmetal_bc3.ktx b/data/textures/darkmetal_bc3_unorm.ktx similarity index 100% rename from data/textures/darkmetal_bc3.ktx rename to data/textures/darkmetal_bc3_unorm.ktx diff --git a/data/textures/darkmetal_etc2_unorm.ktx b/data/textures/darkmetal_etc2_unorm.ktx new file mode 100644 index 00000000..b3cd5a8c Binary files /dev/null and b/data/textures/darkmetal_etc2_unorm.ktx differ diff --git a/offscreen/offscreen.cpp b/offscreen/offscreen.cpp index cd12896c..1ce7747a 100644 --- a/offscreen/offscreen.cpp +++ b/offscreen/offscreen.cpp @@ -481,7 +481,23 @@ public: { models.plane.loadFromFile(getAssetPath() + "models/plane.obj", vertexLayout, 0.5f, vulkanDevice, queue); models.example.loadFromFile(getAssetPath() + "models/chinesedragon.dae", vertexLayout, 0.3f, vulkanDevice, queue); - textures.colorMap.loadFromFile(getAssetPath() + "textures/darkmetal_bc3.ktx", VK_FORMAT_BC3_UNORM_BLOCK, vulkanDevice, queue); + + // Textures + std::string texFormatSuffix; + VkFormat texFormat; + // Get supported compressed texture format + if (vulkanDevice->features.textureCompressionBC) { + textures.colorMap.loadFromFile(getAssetPath() + "textures/darkmetal_bc3_unorm.ktx", VK_FORMAT_BC3_UNORM_BLOCK, vulkanDevice, queue); + } + else if (vulkanDevice->features.textureCompressionASTC_LDR) { + textures.colorMap.loadFromFile(getAssetPath() + "textures/darkmetal_astc_8x8_unorm.ktx", VK_FORMAT_ASTC_8x8_UNORM_BLOCK, vulkanDevice, queue); + } + else if (vulkanDevice->features.textureCompressionETC2) { + textures.colorMap.loadFromFile(getAssetPath() + "textures/darkmetal_etc2_unorm.ktx", VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, vulkanDevice, queue); + } + else { + vks::tools::exitFatal("Device does not support any compressed texture format!", "Error"); + } } void generateQuad()