Unity画像最適化ツール- Ditherのディザリングに対する改善方法

Unityモバイルプラットフォーム向けゲーム開発おいて、画像アセットはいつも一番リソースを占めているアセットです。同じ視覚効果を維持すると同時に、どのように画像アセットをできるだけ減らせることが、開発チームのよくある問題です。通常、3Dオブジェクトのテクスチャに対して、ETC/PVRTCなど圧縮率高いアルゴリズムで処理してもよいですが、細部に厳しいUIテクスチャに対して、このような処理は画質の歪みで品質基準に満たないことが多いです。このような画像アセットは、画質歪みの少ない16bitの画像形式で保存することを検討しましょう。
 
しかし階調の比較的に高いテクスチャにとっては、Unityのデフォルト変換方法では画質の劣化を招きます。この問題に対して、keijiroはDither4444というアルゴリズムで実現しました。下記図1でわかるように,細部滑らかな画像に対して、当該アルゴリズムはグラデーションがつぶれている現象は軽減できたが、若干ジャリジャリとしたノイズが混ざる形となっています。

<図1> 左側:オリジナル画像 右側:keijiroの Dither4444イメージ図

本ブログの作者はkeijiroのアルゴリズムに基づいて改良しました。RGB24Bitの画像をディザリング後、RGB565へビットシフトする方法を提供し、ほぼ肉眼で見える画質劣化現象が解消されました。実際なイメージは図2をご参照。

<図2> 左側:オリジナル図 右側:作者の Dither565イメージ図

 

実際、作者のプロジェクト開発時に、ETC/PVRTC圧縮に適しない画像処理はほぼ本章で紹介されたRGB565もしくはRGB565+A8のアルゴリズムで処理し、肉眼レベルで画質劣化を生じないように、アセットの最適化を行った。
最後にOnPostprocessTextureコードを参照:

f:id:UWATechnologies:20191118191111j:plain

 もっと詳しい情報については、UWAブログのホームページで確認してください。

https://blog.jp.uwa4d.com/2019/11/04/unity画像最適化ツール/