From 0e918e479f02465659a8863aec44d1fbb3151ae0 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Wed, 15 Dec 2010 12:36:26 +0100 Subject: [PATCH] try to support premultiplied alpha for the particlefont --- misc/tools/cached-converter.sh | 40 +++++++++++++++++++++++++++------- misc/tools/compress-texture | 24 ++++++++++++++++++++ 2 files changed, 56 insertions(+), 8 deletions(-) diff --git a/misc/tools/cached-converter.sh b/misc/tools/cached-converter.sh index 8827a50f..c5b3bef7 100755 --- a/misc/tools/cached-converter.sh +++ b/misc/tools/cached-converter.sh @@ -93,6 +93,15 @@ reduce_jpeg2_dds() "$meprefix"compress-texture "$dds_tool" dxt5 "$tmpdir/x.tga" "$o" $1 } +reduce_jpeg2_dds_premul() +{ + i=$1; shift + ia=$1; shift + o=$1; shift; shift + convert "$i" "$ia" -compose CopyOpacity -composite "$tmpdir/x.tga" && \ + "$meprefix"compress-texture "$dds_tool" dxt4 "$tmpdir/x.tga" "$o" $1 +} + reduce_jpeg2_jpeg2() { i=$1; shift @@ -153,6 +162,14 @@ reduce_rgba_dds() "$meprefix"compress-texture "$dds_tool" dxt5 "$tmpdir/x.tga" "$o" $1 } +reduce_rgba_dds_premul() +{ + i=$1; shift; shift + o=$1; shift; shift + convert "$i" "$tmpdir/x.tga" && \ + "$meprefix"compress-texture "$dds_tool" dxt4 "$tmpdir/x.tga" "$o" $1 +} + reduce_rgba_jpeg2() { i=$1; shift; shift @@ -244,6 +261,13 @@ for F in "$@"; do esac fi + pm= + case "$f" in + ./particles/*) # deluxemap + pm=_premul + ;; + esac + if $do_jpeg_if_not_dds; then if $will_dds; then will_jpeg=false @@ -264,22 +288,22 @@ for F in "$@"; do ;; *.jpg) if [ -f "${f}_alpha.jpg" ]; then - cached "$will_dds" reduce_jpeg2_dds "$F" "${f}_alpha.jpg" "dds/${f}.dds" "" "$dds_flags" - cached "$will_jpeg" reduce_jpeg2_jpeg2 "$F" "${f}_alpha.jpg" "$F" "${f}_alpha.jpg" "$jqual_rgb" "$jqual_a" + cached "$will_dds" reduce_jpeg2_dds$pm "$F" "${f}_alpha.jpg" "dds/${f}.dds" "" "$dds_flags" + cached "$will_jpeg" reduce_jpeg2_jpeg2 "$F" "${f}_alpha.jpg" "$F" "${f}_alpha.jpg" "$jqual_rgb" "$jqual_a" else - cached "$will_dds" reduce_rgb_dds "$F" "" "dds/${f}.dds" "" "$dds_flags" - cached "$will_jpeg" reduce_jpeg_jpeg "$F" "" "$F" "" "$jqual_rgb" + cached "$will_dds" reduce_rgb_dds "$F" "" "dds/${f}.dds" "" "$dds_flags" + cached "$will_jpeg" reduce_jpeg_jpeg "$F" "" "$F" "" "$jqual_rgb" fi ;; *.png|*.tga) cached true has_alpha "$F" "" "$F.hasalpha" "" conv=false if [ -s "$F.hasalpha" ]; then - cached "$will_dds" reduce_rgba_dds "$F" "" "dds/${f}.dds" "" "$dds_flags" - cached "$will_jpeg" reduce_rgba_jpeg2 "$F" "" "${f}.jpg" "${f}_alpha.jpg" "$jqual_rgb" "$jqual_a" + cached "$will_dds" reduce_rgba_dds$pm "$F" "" "dds/${f}.dds" "" "$dds_flags" + cached "$will_jpeg" reduce_rgba_jpeg2 "$F" "" "${f}.jpg" "${f}_alpha.jpg" "$jqual_rgb" "$jqual_a" else - cached "$will_dds" reduce_rgb_dds "$F" "" "dds/${f}.dds" "" "$dds_flags" - cached "$will_jpeg" reduce_rgb_jpeg "$F" "" "${f}.jpg" "" "$jqual_rgb" + cached "$will_dds" reduce_rgb_dds "$F" "" "dds/${f}.dds" "" "$dds_flags" + cached "$will_jpeg" reduce_rgb_jpeg "$F" "" "${f}.jpg" "" "$jqual_rgb" fi rm -f "$F.hasalpha" ;; diff --git a/misc/tools/compress-texture b/misc/tools/compress-texture index 74399221..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,7 +37,9 @@ 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"` @@ -47,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 -- 2.39.2