s2tc
s2tc copied to clipboard
S2TC - a subset of a wellknown texture compression scheme (actually Color Cell Compression)
S2TC Environment Variables
Color Distance Function
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 normalization
The 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.
Color Selection
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 considered- greater than
0: additionally, that many random color values in the range of the input color values are considered
The 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.
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 made
The 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).