mirror of
https://github.com/bkaradzic/bimg.git
synced 2026-02-17 20:52:38 +01:00
texturec: Added support for vertical cubemap strip.
This commit is contained in:
@@ -571,8 +571,8 @@ namespace bimg
|
||||
|
||||
for (uint16_t side = 0; side < numSides; ++side)
|
||||
{
|
||||
bimg::ImageMip mip;
|
||||
bimg::imageGetRawData(*_imageContainer, side, 0, _imageContainer->m_data, _imageContainer->m_size, mip);
|
||||
ImageMip mip;
|
||||
imageGetRawData(*_imageContainer, side, 0, _imageContainer->m_data, _imageContainer->m_size, mip);
|
||||
|
||||
const uint32_t pitch = _imageContainer->m_width*16;
|
||||
const uint32_t slice = _imageContainer->m_height*pitch;
|
||||
@@ -617,8 +617,8 @@ namespace bimg
|
||||
|
||||
for (uint16_t side = 0; side < numSides; ++side)
|
||||
{
|
||||
bimg::ImageMip mip;
|
||||
bimg::imageGetRawData(*_imageContainer, side, 0, _imageContainer->m_data, _imageContainer->m_size, mip);
|
||||
ImageMip mip;
|
||||
imageGetRawData(*_imageContainer, side, 0, _imageContainer->m_data, _imageContainer->m_size, mip);
|
||||
|
||||
const uint32_t pitch = _imageContainer->m_width*16;
|
||||
const uint32_t slice = _imageContainer->m_height*pitch;
|
||||
|
||||
@@ -336,15 +336,17 @@ namespace bimg
|
||||
if (_input.m_depth != 1
|
||||
&& _input.m_numLayers != 1
|
||||
&& _input.m_format != TextureFormat::RGBA32F
|
||||
&& _input.m_width/6 != _input.m_height)
|
||||
&& ( (_input.m_width != _input.m_height*6) || (_input.m_width*6 != _input.m_height) ) )
|
||||
{
|
||||
BX_ERROR_SET(_err, BIMG_ERROR, "Input image format is not strip projection.");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const bool horizontal = _input.m_width == _input.m_height*6;
|
||||
const uint32_t srcPitch = _input.m_width*16;
|
||||
const uint32_t dstWidth = _input.m_height;
|
||||
const uint32_t dstWidth = horizontal ? _input.m_height : _input.m_width;
|
||||
const uint32_t dstPitch = dstWidth*16;
|
||||
const uint32_t step = horizontal ? dstPitch : dstPitch*dstWidth;
|
||||
|
||||
ImageContainer* output = imageAlloc(_allocator
|
||||
, _input.m_format
|
||||
@@ -358,7 +360,7 @@ namespace bimg
|
||||
|
||||
const uint8_t* srcData = (const uint8_t*)_input.m_data;
|
||||
|
||||
for (uint8_t side = 0; side < 6 && _err->isOk(); ++side, srcData += dstPitch)
|
||||
for (uint8_t side = 0; side < 6 && _err->isOk(); ++side, srcData += step)
|
||||
{
|
||||
ImageMip dstMip;
|
||||
imageGetRawData(*output, side, 0, output->m_data, output->m_size, dstMip);
|
||||
|
||||
@@ -195,20 +195,19 @@ bimg::ImageContainer* convert(bx::AllocatorI* _allocator, const void* _inputData
|
||||
}
|
||||
else if (_options.strip)
|
||||
{
|
||||
if (outputDepth == 1
|
||||
&& outputWidth/6 == outputHeight)
|
||||
if (outputDepth == 1
|
||||
&& ( (outputWidth == outputHeight*6) || (outputWidth*6 == outputHeight) ) )
|
||||
{
|
||||
if (outputWidth/6 > _options.maxSize)
|
||||
{
|
||||
outputWidth = _options.maxSize*6;
|
||||
outputHeight = _options.maxSize;
|
||||
}
|
||||
const bool horizontal = outputWidth == outputHeight*6;
|
||||
|
||||
outputWidth = bx::min(outputWidth, horizontal ? _options.maxSize*6 : _options.maxSize);
|
||||
outputHeight = bx::min(outputHeight, horizontal ? _options.maxSize : _options.maxSize*6);
|
||||
}
|
||||
else
|
||||
{
|
||||
bimg::imageFree(input);
|
||||
|
||||
BX_ERROR_SET(_err, TEXTRUREC_ERROR, "Input image format is not horizontal strip.");
|
||||
BX_ERROR_SET(_err, TEXTRUREC_ERROR, "Input image format is not horizontal or vertical strip.");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
@@ -325,7 +324,7 @@ bimg::ImageContainer* convert(bx::AllocatorI* _allocator, const void* _inputData
|
||||
|
||||
bimg::ImageContainer* dst;
|
||||
|
||||
if (outputWidth/2 == outputHeight)
|
||||
if (outputWidth == outputHeight*2)
|
||||
{
|
||||
dst = bimg::imageCubemapFromLatLongRgba32F(_allocator, *src, true, _err);
|
||||
bimg::imageFree(src);
|
||||
@@ -933,7 +932,7 @@ void help(const char* _error = NULL, bool _showHelp = true)
|
||||
" --mipskip <N> Skip <N> number of mips.\n"
|
||||
" -n, --normalmap Input texture is normal map. (Implies --linear)\n"
|
||||
" --equirect Input texture is equirectangular projection of cubemap.\n"
|
||||
" --strip Input texture is horizontal strip of cubemap.\n"
|
||||
" --strip Input texture is horizontal or vertical strip of cubemap.\n"
|
||||
" --sdf Compute SDF texture.\n"
|
||||
" --ref <alpha> Alpha reference value.\n"
|
||||
" --iqa Image Quality Assessment\n"
|
||||
|
||||
Reference in New Issue
Block a user