Skip to content


Subversion checkout URL

You can clone with
Download ZIP
S2TC - a subset of a wellknown texture compression scheme (actually Color Cell Compression)
C++ Shell C
Branch: master
Failed to load latest commit information.
m4 clarify license of DP-derived parts
tests also test s2tc_from_s3tc
.gitignore Add "compile" to .gitignore
COPYING fix name in license ;) Don't try to link to libdl on non-Linux systems
README.txt Update README.txt autotools! Don't try to link to libdl on non-Linux systems
s2tc_algorithm.cpp Implement the w0avg mode (approximation to wavg, FAST)
s2tc_algorithm.h Prepare for adding a W0AVG mode.
s2tc_common.h Refactor the code to provide a better framework for compression techn…
s2tc_decompress.cpp fix file opening bug in s2tc_decompress
s2tc_from_s3tc.cpp fix DXT5a dithering
s2tc_libtxc_dxtn.cpp Make the W0AVG mode available via S2TC_COLORDIST_MODE
s2tc_license.h properly mark everything as MIT licensed
txc_dxtn.h make .h file identical to libtxc_dxtn's rename the .pc file


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 input
*   `YUV`: weighted Y'Cb'Cr' difference assuming sRGB input
*   `SRGB`: weighted YCbCr difference assuming sRGB input
*   `SRGB_MIXED`: weighted "Y'(Y)Cb'Cr'" difference assuming sRGB input
*   `AVG`: standard average of component difference (generic)
*   `WAVG`: weighted RGB average of component difference
*   `W0AVG`: superfast weighted RGB average of component difference
*   `NORMALMAP`: 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

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 refinement
*   `ALWAYS`: unconditionally perform color refinement
*   `LOOP`: 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`).
Something went wrong with that request. Please try again.