Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Docs/ChangeLog-5x.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ The 5.6.0 release is a minor maintenance release.
* **Command line tool updates:**
* **Bug fix:** Fixed incorrect plane stride when writing an uncompressed 3D
LDR image to a DDS container.
* **Bug fix:** Fixed potential integer overflow when storing very large
uncompressed images to a `dds` or `.ktx` output image format.

<!-- ---------------------------------------------------------------------- -->
## 5.5.0
Expand Down
46 changes: 23 additions & 23 deletions Source/astcenccli_image.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -259,8 +259,8 @@ std::vector<float> floatx4_array_from_astc_img(
bool y_flip,
unsigned int z_index
) {
unsigned int dim_x = img->dim_x;
unsigned int dim_y = img->dim_y;
size_t dim_x = img->dim_x;
size_t dim_y = img->dim_y;
std::vector<float> buf(4 * dim_x * dim_y);
float* buf_data = buf.data();

Expand All @@ -269,35 +269,35 @@ std::vector<float> floatx4_array_from_astc_img(
if (img->data_type == ASTCENC_TYPE_U8)
{
uint8_t* data8 = static_cast<uint8_t*>(img->data[z_index]);
for (unsigned int y = 0; y < dim_y; y++)
for (size_t y = 0; y < dim_y; y++)
{
unsigned int ymod = y_flip ? dim_y - y - 1 : y;
size_t mod_y = y_flip ? dim_y - y - 1 : y;
float* dst = buf_data + y * dim_x * 4;

for (unsigned int x = 0; x < dim_x; x++)
for (size_t x = 0; x < dim_x; x++)
{
dst[4 * x ] = data8[(4 * dim_x * ymod) + (4 * x )] * (1.0f / 255.0f);
dst[4 * x + 1] = data8[(4 * dim_x * ymod) + (4 * x + 1)] * (1.0f / 255.0f);
dst[4 * x + 2] = data8[(4 * dim_x * ymod) + (4 * x + 2)] * (1.0f / 255.0f);
dst[4 * x + 3] = data8[(4 * dim_x * ymod) + (4 * x + 3)] * (1.0f / 255.0f);
dst[4 * x ] = data8[(4 * dim_x * mod_y) + (4 * x )] * (1.0f / 255.0f);
dst[4 * x + 1] = data8[(4 * dim_x * mod_y) + (4 * x + 1)] * (1.0f / 255.0f);
dst[4 * x + 2] = data8[(4 * dim_x * mod_y) + (4 * x + 2)] * (1.0f / 255.0f);
dst[4 * x + 3] = data8[(4 * dim_x * mod_y) + (4 * x + 3)] * (1.0f / 255.0f);
}
}
}
else if (img->data_type == ASTCENC_TYPE_F16)
{
uint16_t* data16 = static_cast<uint16_t*>(img->data[z_index]);
for (unsigned int y = 0; y < dim_y; y++)
for (size_t y = 0; y < dim_y; y++)
{
unsigned int ymod = y_flip ? dim_y - y - 1 : y;
size_t mod_y = y_flip ? dim_y - y - 1 : y;
float *dst = buf_data + y * dim_x * 4;

for (unsigned int x = 0; x < dim_x; x++)
for (size_t x = 0; x < dim_x; x++)
{
vint4 colori(
data16[(4 * dim_x * ymod) + (4 * x )],
data16[(4 * dim_x * ymod) + (4 * x + 1)],
data16[(4 * dim_x * ymod) + (4 * x + 2)],
data16[(4 * dim_x * ymod) + (4 * x + 3)]
data16[(4 * dim_x * mod_y) + (4 * x )],
data16[(4 * dim_x * mod_y) + (4 * x + 1)],
data16[(4 * dim_x * mod_y) + (4 * x + 2)],
data16[(4 * dim_x * mod_y) + (4 * x + 3)]
);

vfloat4 color = float16_to_float(colori);
Expand All @@ -309,17 +309,17 @@ std::vector<float> floatx4_array_from_astc_img(
{
assert(img->data_type == ASTCENC_TYPE_F32);
float* data32 = static_cast<float*>(img->data[z_index]);
for (unsigned int y = 0; y < dim_y; y++)
for (size_t y = 0; y < dim_y; y++)
{
unsigned int ymod = y_flip ? dim_y - y - 1 : y;
size_t mod_y = y_flip ? dim_y - y - 1 : y;
float *dst = buf_data + y * dim_x * 4;

for (unsigned int x = 0; x < dim_x; x++)
for (size_t x = 0; x < dim_x; x++)
{
dst[4 * x ] = data32[(4 * dim_x * ymod) + (4 * x )];
dst[4 * x + 1] = data32[(4 * dim_x * ymod) + (4 * x + 1)];
dst[4 * x + 2] = data32[(4 * dim_x * ymod) + (4 * x + 2)];
dst[4 * x + 3] = data32[(4 * dim_x * ymod) + (4 * x + 3)];
dst[4 * x ] = data32[(4 * dim_x * mod_y) + (4 * x )];
dst[4 * x + 1] = data32[(4 * dim_x * mod_y) + (4 * x + 1)];
dst[4 * x + 2] = data32[(4 * dim_x * mod_y) + (4 * x + 2)];
dst[4 * x + 3] = data32[(4 * dim_x * mod_y) + (4 * x + 3)];
}
}
}
Expand Down
Loading
Loading