Unity Shader #4 ディゾルブ
このノートでは、各種ディゾルブ(溶解)アルゴリズムの使用、ディゾルブアルゴリズムから派生したマテリアル遷移、およびUnityでC#スクリプトでディゾルブを制御する簡単なフレームワークについて説明します。
最も基本的なシンプルなディゾルブ
ディゾルブは3つの部分に分けられます:
- 未溶解部分:完全に不透明、元の固有色を保持
- 溶解済み部分:完全に透明、不可視
- 溶解エッジ:溶解部分の境界、発光したり不揃いだったりする
アルゴリズムの概要
- グラデーションマップをサンプリング。Propertyで実際の黑白領域を制御し、stepで未溶解と溶解済みの部分を確定
- エッジ領域を確認。溶解エッジに近い領域のエッジ判定値を1に
- エッジに近いほど色をエッジの色に、そうでなければサンプリングした固有色に。lerpで簡単に実現
グラデーションマップのrチャンネルをマテリアルのalphaチャンネルとして使用します。上向き溶解効果のため、変数_ChangeAmountを引きます。AlphaGreaterThanはデフォルトで0.5なので、_ChangeAmountの範囲は[-1, 1]に設定します。
グラデーションマップをノイズテクスチャ(Noise Texture)に換えると、よりランダムなディゾルブが作れます。
