52 color_array[0].
a = 0xFF;
64 color_array[1].
a = 0xFF;
74 color_array[2].
r = (2 * color_array[0].
r + color_array[1].
r) / 3;
75 color_array[2].
g = (2 * color_array[0].
g + color_array[1].
g) / 3;
76 color_array[2].
b = (2 * color_array[0].
b + color_array[1].
b) / 3;
77 color_array[2].
a = 0xFF;
79 color_array[3].
r = (2 * color_array[1].
r + color_array[0].
r) / 3;
80 color_array[3].
g = (2 * color_array[1].
g + color_array[0].
g) / 3;
81 color_array[3].
b = (2 * color_array[1].
b + color_array[0].
b) / 3;
82 color_array[3].
a = 0xFF;
88 color_array[2].
r = (color_array[0].
r + color_array[1].
r) / 2;
89 color_array[2].
g = (color_array[0].
g + color_array[1].
g) / 2;
90 color_array[2].
b = (color_array[0].
b + color_array[1].
b) / 2;
91 color_array[2].
a = 0xFF;
94 color_array[3].
r = 0x00;
95 color_array[3].
g = 0x00;
96 color_array[3].
b = 0x00;
97 color_array[3].
a = 0x00;
105 color_array[0].
b = (3 *
col0.
b * 22) / 8;
107 color_array[0].
r = (3 *
col0.
r * 22) / 8;
108 color_array[0].
a = 0xFF;
110 color_array[1].
r = (3 *
col1.
r * 22) / 8;
112 color_array[1].
b = (3 *
col1.
b * 22) / 8;
113 color_array[1].
a = 0xFF;
115 int gdiff = color_array[1].
g - color_array[0].
g;
119 color_array[2].
r = ((2 *
col0.
r +
col1.
r) * 22) / 8;
120 color_array[2].
g = (256 * color_array[0].
g + gdiff / 4 + 128 + gdiff * 80) / 256;
121 color_array[2].
b = ((2 *
col0.
b +
col1.
b) * 22) / 8;
122 color_array[2].
a = 0xFF;
124 color_array[3].
r = ((2 *
col1.
r +
col0.
r) * 22) / 8;
125 color_array[3].
g = (256 * color_array[1].
g - gdiff / 4 + 128 - gdiff * 80) / 256;
126 color_array[3].
b = ((2 *
col1.
b +
col0.
b) * 22) / 8;
127 color_array[3].
a = 0xFF;
134 color_array[2].
g = (256 * color_array[0].
g + gdiff / 4 + 128 + gdiff * 128) / 256;
136 color_array[2].
a = 0xFF;
139 color_array[3].
r = 0x00;
140 color_array[3].
g = 0x00;
141 color_array[3].
b = 0x00;
142 color_array[3].
a = 0x00;
152 color_array[0].
a = 0xFF;
157 color_array[1].
a = 0xFF;
160 color_array[2].
r = (color_array[0].
r + color_array[1].
r) / 2;
161 color_array[2].
g = (color_array[0].
g + color_array[1].
g) / 2;
162 color_array[2].
b = (color_array[0].
b + color_array[1].
b) / 2;
163 color_array[2].
a = 0xFF;
166 color_array[3].
r = 0x00;
167 color_array[3].
g = 0x00;
168 color_array[3].
b = 0x00;
169 color_array[3].
a = 0x00;
177 color_array[0].
a = 0xFF;
182 color_array[1].
a = 0xFF;
185 color_array[2].
r = (2 * color_array[0].
r + color_array[1].
r) / 3;
186 color_array[2].
g = (2 * color_array[0].
g + color_array[1].
g) / 3;
187 color_array[2].
b = (2 * color_array[0].
b + color_array[1].
b) / 3;
188 color_array[2].
a = 0xFF;
190 color_array[3].
r = (2 * color_array[1].
r + color_array[0].
r) / 3;
191 color_array[3].
g = (2 * color_array[1].
g + color_array[0].
g) / 3;
192 color_array[3].
b = (2 * color_array[1].
b + color_array[0].
b) / 3;
193 color_array[3].
a = 0xFF;
203 for (
uint j = 0; j < 4; j++) {
204 for (
uint i = 0; i < 4; i++) {
205 uint idx = (
row[j] >> (2 * i)) & 3;
206 block->
color(i, j) = color_array[idx];
218 for (
uint j = 0; j < 4; j++) {
219 for (
uint i = 0; i < 4; i++) {
220 uint idx = (
row[j] >> (2 * i)) & 3;
221 block->
color(i, j) = color_array[idx];
229 for (
uint i = 0; i < 16; i++) {
230 indices |= (idx[i] & 3) << (2 * i);
327 alpha[2] = (6 * alpha[0] + 1 * alpha[1]) / 7;
328 alpha[3] = (5 * alpha[0] + 2 * alpha[1]) / 7;
329 alpha[4] = (4 * alpha[0] + 3 * alpha[1]) / 7;
330 alpha[5] = (3 * alpha[0] + 4 * alpha[1]) / 7;
331 alpha[6] = (2 * alpha[0] + 5 * alpha[1]) / 7;
332 alpha[7] = (1 * alpha[0] + 6 * alpha[1]) / 7;
341 alpha[2] = (4 * alpha[0] + 1 * alpha[1]) / 5;
342 alpha[3] = (3 * alpha[0] + 2 * alpha[1]) / 5;
343 alpha[4] = (2 * alpha[0] + 3 * alpha[1]) / 5;
344 alpha[5] = (1 * alpha[0] + 4 * alpha[1]) / 5;
351 index_array[0x0] =
bits0();
352 index_array[0x1] =
bits1();
353 index_array[0x2] =
bits2();
354 index_array[0x3] =
bits3();
355 index_array[0x4] =
bits4();
356 index_array[0x5] =
bits5();
357 index_array[0x6] =
bits6();
358 index_array[0x7] =
bits7();
359 index_array[0x8] =
bits8();
360 index_array[0x9] =
bits9();
361 index_array[0xA] =
bitsA();
362 index_array[0xB] =
bitsB();
363 index_array[0xC] =
bitsC();
364 index_array[0xD] =
bitsD();
365 index_array[0xE] =
bitsE();
366 index_array[0xF] =
bitsF();
372 return uint((this->
u >> offset) & 0x7);
384 uint8 alpha_array[8];
387 uint8 index_array[16];
390 for (
uint i = 0; i < 16; i++) {
391 block->
color(i).
a = alpha_array[index_array[i]];
401 tmp |= (*
b & (
uint64)(0x000000000FFF0000LL)) << 36;
402 tmp |= (*
b & (
uint64)(0x000000FFF0000000LL)) << 12;
403 tmp |= (*
b & (
uint64)(0x000FFF0000000000LL)) >> 12;
404 tmp |= (*
b & (
uint64)(0xFFF0000000000000LL)) >> 36;
414 uint tmp = (*
b & 0xFF000000);
415 tmp |= (*
b & 0x00000FFF) << 12;
416 tmp |= (*
b & 0x00FFF000) >> 12;
453 uint8 alpha_array[8];
456 uint8 index_array[16];
459 for (
uint i = 0; i < 16; i++) {
461 c.b =
c.g =
c.r = alpha_array[index_array[i]];
478 uint8 alpha_array[8];
479 uint8 index_array[16];
484 for (
uint i = 0; i < 16; i++) {
486 c.r = alpha_array[index_array[i]];
492 for (
uint i = 0; i < 16; i++) {
494 c.g = alpha_array[index_array[i]];
515 color_array[0].
b = 0x00;
516 color_array[0].
g =
col0[1];
517 color_array[0].
r =
col0[0];
518 color_array[0].
a = 0xFF;
520 color_array[1].
r = 0x00;
521 color_array[1].
g =
col0[1];
522 color_array[1].
b =
col1[0];
523 color_array[1].
a = 0xFF;
525 color_array[2].
r = 0x00;
526 color_array[2].
g = (2 * color_array[0].
g + color_array[1].
g) / 3;
527 color_array[2].
b = (2 * color_array[0].
b + color_array[1].
b) / 3;
528 color_array[2].
a = 0xFF;
530 color_array[3].
r = 0x00;
531 color_array[3].
g = (2 * color_array[1].
g + color_array[0].
g) / 3;
532 color_array[3].
b = (2 * color_array[1].
b + color_array[0].
b) / 3;
533 color_array[3].
a = 0xFF;
543 for (
uint j = 0; j < 4; j++) {
544 for (
uint i = 0; i < 4; i++) {
545 uint idx = (
row[j] >> (2 * i)) & 3;
546 block->
color(i, j) = color_array[idx];
554 for (
uint i = 0; i < 16; i++) {
555 indices |= (idx[i] & 3) << (2 * i);
579 for (
unsigned short &alpha : block.
row) {
void mem_read(Stream &mem, BlockDXT1 &block)
unsigned long long uint64
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
void decodeBlock(ColorBlock *block) const
void indices(uint8 index_array[16]) const
uint index(uint index) const
void setIndex(uint index, uint value)
void decodeBlock(ColorBlock *block) const
void evaluatePalette8(uint8 alpha[8]) const
void evaluatePalette(uint8 alpha[8]) const
void evaluatePalette6(uint8 alpha[8]) const
void decodeBlock(ColorBlock *block) const
void decodeBlock(ColorBlock *block) const
void decodeBlock(ColorBlock *block) const
void setIndices(const int *idx)
void evaluatePalette(Color32 color_array[4]) const
void evaluatePalette3(Color32 color_array[4]) const
void decodeBlock(ColorBlock *block) const
void evaluatePalette4(Color32 color_array[4]) const
void setIndices(const int *idx)
uint evaluatePalette(Color32 color_array[4]) const
void decodeBlockNV5x(ColorBlock *block) const
uint evaluatePaletteNV5x(Color32 color_array[4]) const
void decodeBlockNV5x(ColorBlock *block) const
void decodeBlock(ColorBlock *block) const
void decodeBlockNV5x(ColorBlock *block) const
void decodeBlock(ColorBlock *block) const
Color32 color(uint i) const