パパ先生のゲーム開発ブログ

二児のパパがゲーム開発アレコレを書いているブログ。Unity / UE4 / Scratch / プログラミングゼミ / プログラミング教育

[Unity] ASTCテクスチャ + Mask時にノイズが出るのを防ぐ

Unity2019.3.3f1で検証

ASTCテクスチャ + Mask(ugui)を使用した際、

抜き部分の周りにノイズが発生することがあったのでその回避方法です。

*サンプルで使用している画像はユニティちゃんデータの「神林ゆうこ」ちゃんです^^   

 

現象

f:id:papa-sensei:20200302230758p:plain

このようにMask外にノイズのようなものが発生してしまう現象に合いました。

 

確認手順

手元で確認した際の手順です。

まず画像としてはカラーと抜き用のマスク画像2種類です。  

f:id:papa-sensei:20200302231149p:plain

 

そしてテクスチャのフォーマットとしてはASTCを設定します。

(画像ではRGBA Compressed ASTC 5x5 blockを指定。ブロックはどれでも良いです)

f:id:papa-sensei:20200302231631p:plain

 

新規プロジェクトを作り、ヒエラルキー上に

Canvas -> Mask Image -> Mask の階層を作ります。

f:id:papa-sensei:20200302231346p:plain

 

MaskのInspectorは次の通りです。

なんてことない普通のMaskです。

画像にはマスク用の白画像を設定します。

f:id:papa-sensei:20200302231416p:plain

 

そして子のImageにカラー画像を設定すると・・

f:id:papa-sensei:20200302231829p:plain

このように、Mask範囲以外の部分にノイズが出てしまいました。

テクスチャフォーマットをASTC以外にすると発生せず、

ASTCの場合だけこの現象が発生しました。 

 

対応方法

この対応であっているのかわかりませんが、解決方法。

f:id:papa-sensei:20200302231947p:plain

テクスチャ設定項目の「Alpha Is Transparency」のチェックを外します

これでノイズを抑えることができます。

f:id:papa-sensei:20200302232058p:plain

 

 Alpha Is Transparencyは、

テクスチャプレビュー時に透明部分に格子模様を表示してくれるだけではなく、

透明と不透明部分の境目に白モヤなどが出てしまうのを防いでくれる機能なのですが、

この部分の処理とASTC圧縮の相性が何か悪いのかなと推測...

同じ現象にあった方の解決に少しでも役立てば!

 

参考記事

ASTCテクスチャについては

テラシュールさんが記事が詳しいのでそちらを見てください^^

f:id:papa-sensei:20200302232633p:plain