From 382234971681efd4f91ac7211cc9bf40f39ba0dc Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Thu, 18 Mar 2021 05:19:31 -0700 Subject: [PATCH] Add support for the "crunch" texture compression tool. --- misc/tools/cached-converter.sh | 8 +++++++- misc/tools/compress-texture | 20 +++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/misc/tools/cached-converter.sh b/misc/tools/cached-converter.sh index 9fbdf240..ec976351 100755 --- a/misc/tools/cached-converter.sh +++ b/misc/tools/cached-converter.sh @@ -396,25 +396,31 @@ for F in "$@"; do ;; esac - # configure S2TC + # Specific hacks for normalmaps. case "$f" in ./maps/*/lm_[0-9][0-9][0-9][13579]) # deluxemap export S2TC_COLORDIST_MODE=NORMALMAP export S2TC_RANDOM_COLORS=256 export S2TC_REFINE_COLORS=LOOP export S2TC_DITHER_MODE=NONE + # Engine ignores alpha channel on these, so we can use the DXT1 black encoding. + export CRUNCH_TEXTYPEFLAGS='-gamma 1.0 -renormalize -rtopmip -uniformMetrics -usetransparentindicesforblack' ;; *_norm) export S2TC_COLORDIST_MODE=NORMALMAP export S2TC_RANDOM_COLORS=256 export S2TC_REFINE_COLORS=LOOP export S2TC_DITHER_MODE=NONE + # Alpha channel here means height. + export CRUNCH_TEXTYPEFLAGS='-gamma 1.0 -renormalize -rtopmip -uniformMetrics' ;; *) export S2TC_COLORDIST_MODE=SRGB_MIXED export S2TC_RANDOM_COLORS=64 export S2TC_REFINE_COLORS=LOOP export S2TC_DITHER_MODE=FLOYDSTEINBERG + # Color channel-like images - consider as sRGB. + export CRUNCH_TEXTYPEFLAGS='-gamma 2.2' ;; esac diff --git a/misc/tools/compress-texture b/misc/tools/compress-texture index 9e3b58e5..418d8e5c 100755 --- a/misc/tools/compress-texture +++ b/misc/tools/compress-texture @@ -17,8 +17,8 @@ f= fourcchack= case "$tool" in - compressonator-dxtc) - # we still have to preprocess the image to premultiply alpha, as it seems + compressonator-dxtc|crunch) + # We still have to preprocess the image to premultiply alpha, as it seems case "$format" in dxt2) fourcchack=DXT2 @@ -30,7 +30,8 @@ case "$tool" in ;; esac ;; - *) + compressonator-atic|nvcompress|s2tc) + # These tools don't support DXT2/4 at all. case "$format" in dxt2) fourcchack=DXT2 @@ -42,6 +43,9 @@ case "$tool" in ;; esac ;; + *) + echo >&2 "Please figure out the DXT2/DXT4 story for $tool." + ;; esac if [ -n "$fourcchack" ]; then @@ -93,6 +97,16 @@ case "$tool" in esac s2tc_compress $f "$@" -i "$src" -o "$dst" ;; + crunch) + case "$format" in + dxt1) f="-DXT1" ;; + dxt2) f="-DXT2" ;; + dxt3) f="-DXT3" ;; + dxt4) f="-DXT4" ;; + dxt5) f="-DXT5" ;; + esac + crunch $f "$@" -noprogress -nostats -quality 255 -mipMode Generate -dxtQuality uber $CRUNCH_TEXTYPEFLAGS -file "$src" -out "$dst" + ;; esac if [ -n "$fourcchack" ]; then -- 2.39.2