X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fxonotic.git;a=blobdiff_plain;f=misc%2Ftools%2Fcompress-texture;h=36aa0281cbb85a3c153890c6007508649a8bb93f;hp=199d9186a6dd633ac5a8886c2943ee11f0d0e944;hb=97fe16d7d3bf7c97873cc5ef52730fee817a6f72;hpb=0981696b606e360a7f39e21b0974ef5663a43435 diff --git a/misc/tools/compress-texture b/misc/tools/compress-texture index 199d9186..36aa0281 100755 --- a/misc/tools/compress-texture +++ b/misc/tools/compress-texture @@ -12,6 +12,23 @@ dst=$1; shift c= f= +fourcchack= +case "$tool" in + compressonator-dxtc) + ;; + *) + case "$format" in + dxt2) + fourcchack=DXT2 + format=dxt3 + ;; + dxt4) + fourcchack=DXT4 + format=dxt5 + ;; + esac + ;; +esac case "$tool" in compressonator-dxtc|compressonator-atic) case "$tool" in @@ -20,16 +37,25 @@ case "$tool" in esac case "$format" in dxt1) f="+fourCC DXT1" ;; + dxt2) f="+fourCC DXT2" ;; dxt3) f="+fourCC DXT3" ;; + dxt4) f="+fourCC DXT4" ;; dxt5) f="+fourCC DXT5" ;; esac dir=`mktemp -d "$HOME/.wine/drive_c/compressonator.XXXXXX"` dir_dos="C:/${dir##*/}" ext=${src##*.} cp "$src" "$dir/src.$ext" - wine "$HOME/.wine/drive_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 - mv "$dir/dst.dds" "$dst" + + # compressonator and wine suck, so we sometimes have to retry :( + for retry in 1 2 3 4 5; do + 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 + if mv "$dir/dst.dds" "$dst"; then + break + fi + done rm -rf "$dir" + [ -f "$dst" ] ;; nvcompress) case "$format" in @@ -40,3 +66,8 @@ case "$tool" in nvcompress $f "$@" "$src" "$dst" ;; esac + +if [ -n "$fourcchack" ]; then + # use dd to hack in the right FOURCC + echo -n "$fourcchack" | dd of="$dst" bs=1 count=4 seek=84 +fi