mirror of
https://github.com/bkaradzic/bimg.git
synced 2026-02-17 20:52:38 +01:00
texturec: More intuitive scaling of equirectangular texture.
This commit is contained in:
@@ -26,7 +26,9 @@
|
||||
#include <string>
|
||||
|
||||
#define BIMG_TEXTUREC_VERSION_MAJOR 1
|
||||
#define BIMG_TEXTUREC_VERSION_MINOR 15
|
||||
#define BIMG_TEXTUREC_VERSION_MINOR 16
|
||||
|
||||
BX_ERROR_RESULT(TEXTRUREC_ERROR, BX_MAKEFOURCC('t', 'c', 0, 0) );
|
||||
|
||||
struct Options
|
||||
{
|
||||
@@ -168,9 +170,28 @@ bimg::ImageContainer* convert(bx::AllocatorI* _allocator, const void* _inputData
|
||||
uint32_t outputHeight = bx::uint32_max(blockHeight * minBlockY, ( (input->m_height + blockHeight - 1) / blockHeight)*blockHeight);
|
||||
uint32_t outputDepth = input->m_depth;
|
||||
|
||||
if (outputWidth > _options.maxSize
|
||||
|| outputHeight > _options.maxSize
|
||||
|| outputDepth > _options.maxSize)
|
||||
if (_options.equirect)
|
||||
{
|
||||
if (outputDepth == 1
|
||||
&& outputWidth/2 == outputHeight)
|
||||
{
|
||||
if (outputWidth/2 > _options.maxSize)
|
||||
{
|
||||
outputWidth = _options.maxSize*4;
|
||||
outputHeight = _options.maxSize*2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
bimg::imageFree(input);
|
||||
|
||||
BX_ERROR_SET(_err, TEXTRUREC_ERROR, "Input image format is not equirectangular projection.");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else if (outputWidth > _options.maxSize
|
||||
|| outputHeight > _options.maxSize
|
||||
|| outputDepth > _options.maxSize)
|
||||
{
|
||||
if (outputDepth > outputWidth
|
||||
&& outputDepth > outputHeight)
|
||||
@@ -890,8 +911,8 @@ int main(int _argc, const char* _argv[])
|
||||
}
|
||||
}
|
||||
|
||||
options.mips = cmdLine.hasArg('m', "mips");
|
||||
options.normalMap = cmdLine.hasArg('n', "normalmap");
|
||||
options.mips = cmdLine.hasArg('m', "mips");
|
||||
options.normalMap = cmdLine.hasArg('n', "normalmap");
|
||||
options.equirect = cmdLine.hasArg("equirect");
|
||||
options.iqa = cmdLine.hasArg("iqa");
|
||||
options.pma = cmdLine.hasArg("pma");
|
||||
@@ -899,7 +920,11 @@ int main(int _argc, const char* _argv[])
|
||||
const char* maxSize = cmdLine.findOption("max");
|
||||
if (NULL != maxSize)
|
||||
{
|
||||
options.maxSize = atoi(maxSize);
|
||||
if (!bx::fromString(&options.maxSize, maxSize) )
|
||||
{
|
||||
help("Parsing max size failed.");
|
||||
return bx::kExitFailure;
|
||||
}
|
||||
}
|
||||
|
||||
options.format = bimg::TextureFormat::Count;
|
||||
|
||||
Reference in New Issue
Block a user