-
Notifications
You must be signed in to change notification settings - Fork 306
Description
says (emphasis added)
In ETC1S, the mode is always differential (diff bit=1), the Rd, Gd, and Bd color deltas are always (0,0,0), and the flip bit is always set. ETC1S blocks are specified using the 15-bit 555 base color (called "color endpoints" in this specification, which is terminology derived from our BC1 texture format systems), the 3-bit intensity table index, and the 4x4 texel array of 2-bit selector indices (which are called "pixel index bits" in the Khronos ETC1 specification).
The Khronos spec says
the flip bit is encoded as 0 — the subsets are identical anyway.
I mean, it doesn't matter much in practice. As Khronos says, both halves of the 4×4 block have the same base color regardless of flip-ness. But as someone writing an ETC1S encoder, I was momentarily confused on what to output and this wiki page ranks pretty highly when doing a web search for "etc1s specification".
BasisU code also emits flip bit = 0:
basis_universal/transcoder/basisu_transcoder.cpp
Lines 7853 to 7855 in c71b173
| //block.set_flip_bit(true); | |
| // Setting the flip bit to false to be compatible with the Khronos KDFS. | |
| block.set_flip_bit(false); |
Relatedly, the Khronos spec also sas that "The [3 bit] Table codeword for each subblock is identical" but this wiki page also doesn't explicitly mention this constraint, unless you count the "the" (meaning unique) in "the 3-bit intensity table index".