sRGB とインポート設定
このページを読むと マスクが「挿入したのにエフェクトがおかしい」という最も一般的な原因であるインポート設定を整理できます。
sRGB をオフにする理由
sRGB(Color Texture)は Unity に対して**「このテクスチャは人間の目で見た色だ」**と告げるチェックボックスです。オンになっていると Unity がガンマ補正を適用し、保存されたピクセル値とシェーダーが読む値が異なります。
色であればそれは正しいです。しかしマスクは数字です。0.5 で焼き込まれたグレーはシェーダーで 0.5 として読まれるべきです。
| テクスチャ種別 | sRGB | 理由 |
|---|---|---|
| マスク(白黒、値) | オフ | 値がそのまま読まれるべき |
| グラデーション結果物(カラー) | オン | 実際に目に映る色 |
| ペイント — マスクモード | オフ | リニアで保存 |
| ペイント — カラーモード | オン | sRGB で保存 |
| コンバイナー パック テクスチャ | オフ | 4 チャンネル全て値 |
Mask Maker が焼き込んだものは既に正しく設定されています
Mask Maker は保存時点で正しい設定を適用します。直接確認が必要なのは外部から作成して持ち込んだマスクです。
確認・修正手順
- プロジェクトウィンドウでテクスチャを選択します。
- Inspector で sRGB (Color Texture) チェックをオフにします。
- Apply をクリックします。クリックしないと反映されません。
あわせて確認するインポート設定
| 設定 | マスク推奨 | 理由 |
|---|---|---|
| sRGB (Color Texture) | オフ | 上記参照 |
| Alpha Is Transparency | オフ | マスクチャンネルとしてアルファを使用する場合、Unity が値に触れないように |
| Compression | None または High Quality | ブロック圧縮はチャンネルを潰します。特にパック済みパックテクスチャではチャンネルが相互に出血します |
| Generate Mip Maps | 任意 | オンにすると遠方で境界が柔らかくなり、薄いマスクはぼやけます |
| Wrap Mode | Clamp | UV 外で繰り返す理由がありません |
| Max Size | 512~1024 | マスクは境界のみが重要です |
パックテクスチャは圧縮に特に弱いです
DXT/BC 系圧縮はチャンネルを独立して扱いません。R チャンネルの境界が G チャンネルに出血して見える現象がここから生じます。チャンネルパッキングしたテクスチャがおかしい場合は、圧縮を最初に疑ってください。
UV が正しいか
マスクは本体テクスチャと同じ UV マップに基づいて読まれます。マスクを挿入したのに完全に予期しない場所にエフェクトが表示される場合、そのスロットが UV1 ではなく別の UV チャンネルを使用するように設定されている可能性があります。
Mask Maker はロードしたメッシュの UV をそのまま使用して焼き込むため、ツール内で作成したマスクは常に本体と同じ UV を使用します。