3 # usage: compress-texture tool compression in.png out.dds
4 # example: compress-texture compressonator dxt1 foo.jpg foo.dds
20 compressonator-dxtc|crunch)
21 # We still have to preprocess the image to premultiply alpha, as it seems
33 compressonator-atic|nvcompress|s2tc)
34 # These tools don't support DXT2/4 at all.
47 echo >&2 "Please figure out the DXT2/DXT4 story for $tool."
51 if [ -n "$fourcchack" ]; then
52 fourcchack_dir=`mktemp -d`
53 convert "$src" -auto-orient -fx "u*u.a" -type TrueColorMatte "$fourcchack_dir/src.$ext"
54 src="$fourcchack_dir/src.$ext"
58 compressonator-dxtc|compressonator-atic)
60 *-dxtc) c="-codec DXTC.dll" ;;
61 *-atic) c="-codec ATICompressor.dll" ;;
64 dxt1) f="+fourCC DXT1" ;;
65 dxt2) f="+fourCC DXT2" ;;
66 dxt3) f="+fourCC DXT3" ;;
67 dxt4) f="+fourCC DXT4" ;;
68 dxt5) f="+fourCC DXT5" ;;
70 dir=`mktemp -d "$HOME/.wine/drive_c/compressonator.XXXXXX"`
71 dir_dos="C:/${dir##*/}"
72 cp "$src" "$dir/src.$ext"
74 # compressonator and wine suck, so we sometimes have to retry :(
75 for retry in 1 2 3 4 5; do
76 wine "c:/Program Files/AMD/The Compressonator 1.50/TheCompressonator.exe" -convert -mipmaps "$dir_dos/src.$ext" "$dir_dos/dst.dds" $c $f "$@" -mipper BoxFilter.dll
77 if mv "$dir/dst.dds" "$dst"; then
87 dxt3) f="-alpha -bc3" ;;
88 dxt5) f="-alpha -bc5" ;;
90 nvcompress $f "$@" "$src" "$dst"
98 s2tc_compress $f "$@" -i "$src" -o "$dst"
108 crunch $f "$@" -noprogress -nostats -quality 255 -mipMode Generate -dxtQuality uber $CRUNCH_TEXTYPEFLAGS -file "$src" -out "$dst"
112 if [ -n "$fourcchack" ]; then
113 # use dd to hack in the right FOURCC
114 echo -n "$fourcchack" | dd of="$dst" bs=1 count=4 seek=84 conv=notrunc
115 rm -rf "$fourcchack_dir"