NazaraEngine/include/Nazara/Renderer/Texture.inl

30 lines
1.1 KiB
C++

// Copyright (C) 2024 Jérôme "SirLynix" Leclercq (lynix680@gmail.com)
// This file is part of the "Nazara Engine - Renderer module"
// For conditions of distribution and use, see copyright notice in Export.hpp
namespace Nz
{
inline TextureInfo Texture::ApplyView(TextureInfo textureInfo, const TextureViewInfo& viewInfo)
{
textureInfo.type = viewInfo.viewType;
textureInfo.pixelFormat = (viewInfo.reinterpretFormat != PixelFormat::Undefined) ? viewInfo.reinterpretFormat : textureInfo.pixelFormat;
textureInfo.width = GetLevelSize(textureInfo.width, viewInfo.baseMipLevel);
textureInfo.height = GetLevelSize(textureInfo.height, viewInfo.baseMipLevel);
textureInfo.depth = GetLevelSize(textureInfo.depth, viewInfo.baseMipLevel);
textureInfo.levelCount = viewInfo.levelCount;
textureInfo.layerCount = viewInfo.layerCount;
return textureInfo;
}
inline unsigned int Texture::GetLevelSize(unsigned int size, unsigned int level)
{
if (size == 0) // Possible dans le cas d'une image invalide
return 0;
return std::max(size >> level, 1U);
}
}