The following color distance functions can be selected by setting the
environment variable S2TC_COLORDIST_MODE
:
RGB
: weighted YCbCr difference assuming linear inputYUV
: weighted Y'Cb'Cr' difference assuming sRGB inputSRGB
: weighted YCbCr difference assuming sRGB inputSRGB_MIXED
: weighted "Y'(Y)Cb'Cr'" difference assuming sRGB inputAVG
: standard average of component difference (generic)WAVG
: weighted RGB average of component differenceW0AVG
: superfast weighted RGB average of component differenceNORMALMAP
: vector distance after normalizationThe default is WAVG
, which is a good compromise between speed and quality for
RGB and sRGB data. For optimum quality on sRGB input, try SRGB_MIXED
.
The color distance function defines how "closeness" of pixel values is judged when the pixel color values are evaluated, colors are selected, or during refinement.
The environment variable S2TC_RANDOM_COLORS
can be set the following way:
-1
: quick selection (darkest and brightest color are chosen, which is
similar to the method in the Color Cell Compression paper)0
: all 16 input colors of a block are considered0
: additionally, that many random color values in the range
of the input color values are consideredThe default is -1
, which is fast but poor quality, however ideally suited for
online compression. For optimum quality, try 64
.
A bad color selection can later be compensated for by color refinement.
The environment variable S2TC_REFINE_COLORS
can be set to the following values:
NEVER
: never run color refinementALWAYS
: unconditionally perform color refinementLOOP
: perform color refinement, evaluate its output and discard it if it
didn't improve quality, re-evaluate the pixel color values, and repeat
until no improvement could be madeThe default is ALWAYS
, which is fast and decent quality, and usually doesn't
make things worse. For optimum quality, try LOOP
.
Color refinement recalculates the color palette of a block after the pixel
value decision by averaging the color values of those encoded as c0 or c1, and
is a technique that helps a lot of the initial color selection was poor (e.g.
if S2TC_RANDOM_COLORS
was not set, or set to -1
).