This commit is contained in:
Branimir Karadžić 2016-01-05 18:32:54 -08:00
parent bc3bb5c6a4
commit 8f5202ca99

View file

@ -139,15 +139,36 @@ namespace bgfx
void imageEncodeFromRgba32f(void* _dst, const void* _src, uint32_t _width, uint32_t _height, uint8_t _format)
{
TextureFormat::Enum format = TextureFormat::Enum(_format);
const float* src = (const float*)_src;
switch (format)
{
case TextureFormat::RGBA8:
{
uint8_t* dst = (uint8_t*)_dst;
for (uint32_t yy = 0; yy < _height; ++yy)
{
for (uint32_t xx = 0; xx < _width; ++xx)
{
const uint32_t offset = (yy*_width + xx) * 4;
const float* input = &src[offset];
uint8_t* output = &dst[offset];
output[0] = uint8_t( (input[0]*0.5f + 0.5f)*255.0f + 0.5f);
output[1] = uint8_t( (input[1]*0.5f + 0.5f)*255.0f + 0.5f);
output[2] = uint8_t( (input[2]*0.5f + 0.5f)*255.0f + 0.5f);
output[3] = uint8_t( (input[3]*0.5f + 0.5f)*255.0f + 0.5f);
}
}
}
break;
case TextureFormat::BC5:
break;
default:
break;
}
BX_UNUSED(_dst, _src, _width, _height, _format);
}
} // namespace bgfx
@ -307,11 +328,12 @@ int main(int _argc, const char* _argv[])
, mip.m_width
, mip.m_height
, mip.m_width*mip.m_bpp/8
, TextureFormat::Enum(mip.m_format)
, mip.m_format
);
imageContainer.m_size = imageGetSize(format, mip.m_width, mip.m_height, 0, false, numMips);
imageContainer.m_format = format;
imageContainer.m_numMips = numMips;
imageContainer.m_size = imageGetSize(format, mip.m_width, mip.m_height, 0, false, numMips);
imageContainer.m_format = format;
output = alloc(imageContainer.m_size);
imageEncodeFromRgba32f(output->data, rgba, mip.m_width, mip.m_height, format);
@ -324,8 +346,8 @@ int main(int _argc, const char* _argv[])
uint32_t width = bx::uint32_max(1, mip.m_width >>lod);
uint32_t height = bx::uint32_max(1, mip.m_height>>lod);
imageRgba32fDownsample2x2NormalMap(width, height, width*4, rgba, rgba);
imageEncodeFromRgba32f(data, rgba, mip.m_width, mip.m_height, format);
imageRgba32fDownsample2x2NormalMap(width, height, width*16, rgba, rgba);
imageEncodeFromRgba32f(data, rgba, width, height, format);
}
}
else
@ -334,8 +356,9 @@ int main(int _argc, const char* _argv[])
temp = BX_ALLOC(&allocator, size);
uint8_t* rgba = (uint8_t*)temp;
imageContainer.m_size = imageGetSize(format, mip.m_width, mip.m_height, 0, false, numMips);
imageContainer.m_format = format;
imageContainer.m_numMips = numMips;
imageContainer.m_size = imageGetSize(format, mip.m_width, mip.m_height, 0, false, numMips);
imageContainer.m_format = format;
output = alloc(imageContainer.m_size);
imageEncodeFromRgba8(output->data, rgba, mip.m_width, mip.m_height, format);
@ -349,7 +372,7 @@ int main(int _argc, const char* _argv[])
uint32_t width = bx::uint32_max(1, mip.m_width >>lod);
uint32_t height = bx::uint32_max(1, mip.m_height>>lod);
imageRgba8Downsample2x2(width, height, width*4, rgba, rgba);
imageEncodeFromRgba8(data, rgba, mip.m_width, mip.m_height, format);
imageEncodeFromRgba8(data, rgba, width, height, format);
}
}