From 498175746e4cc6d8637a29baf81c7f78ab1a64da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Tue, 27 Mar 2018 18:09:31 -0700 Subject: [PATCH] texturev: Fixed layer control for 3D textures with mips. --- tools/texturev/texturev.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tools/texturev/texturev.cpp b/tools/texturev/texturev.cpp index 0d9c151a0..dd363f0c6 100644 --- a/tools/texturev/texturev.cpp +++ b/tools/texturev/texturev.cpp @@ -1484,8 +1484,14 @@ int _main_(int _argc, char** _argv) , bimg::getName(bimg::TextureFormat::Enum(view.m_textureInfo.format) ) ); - ImGui::SliderInt("Layer", (int32_t*)&view.m_layer, 0, view.m_textureInfo.numLayers - 1); - ImGui::SliderInt("Mip", (int32_t*)&view.m_mip, 0, view.m_textureInfo.numMips - 1); + uint32_t numLayers = view.m_textureInfo.numLayers; + if (1 < view.m_textureInfo.depth) + { + numLayers = bx::max(1, view.m_textureInfo.depth >> view.m_mip); + } + view.m_layer = bx::clamp(view.m_layer, 0, numLayers - 1); + ImGui::SliderInt("Layer", (int32_t*)&view.m_layer, 0, numLayers - 1); + ImGui::SliderInt("Mip", (int32_t*)&view.m_mip, 0, view.m_textureInfo.numMips - 1); ImGui::Separator(); @@ -1834,7 +1840,7 @@ int _main_(int _argc, char** _argv) float params[4] = { mip.getValue(), layer.getValue(), view.m_inLinear ? 1.0f : 0.0f, ev.getValue() }; if (1 < view.m_textureInfo.depth) { - params[1] = layer.getValue()/view.m_textureInfo.depth; + params[1] = layer.getValue()/float(bx::max(1, view.m_textureInfo.depth >> view.m_mip) ); } bgfx::setUniform(u_params, params);