T.TAO
Back to Blog
/2 min read/Others

Unity Shader #4 Dissolve

Unity Shader #4 Dissolve

Unity Shader #4 ディゾルブ

このノートでは、各種ディゾルブ(溶解)アルゴリズムの使用、ディゾルブアルゴリズムから派生したマテリアル遷移、およびUnityでC#スクリプトでディゾルブを制御する簡単なフレームワークについて説明します。

最も基本的なシンプルなディゾルブ

ディゾルブは3つの部分に分けられます:

  1. 未溶解部分:完全に不透明、元の固有色を保持
  2. 溶解済み部分:完全に透明、不可視
  3. 溶解エッジ:溶解部分の境界、発光したり不揃いだったりする

アルゴリズムの概要

  1. グラデーションマップをサンプリング。Propertyで実際の黑白領域を制御し、stepで未溶解と溶解済みの部分を確定
  2. エッジ領域を確認。溶解エッジに近い領域のエッジ判定値を1に
  3. エッジに近いほど色をエッジの色に、そうでなければサンプリングした固有色に。lerpで簡単に実現

グラデーションマップのrチャンネルをマテリアルのalphaチャンネルとして使用します。上向き溶解効果のため、変数_ChangeAmountを引きます。AlphaGreaterThanはデフォルトで0.5なので、_ChangeAmountの範囲は[-1, 1]に設定します。

グラデーションマップをノイズテクスチャ(Noise Texture)に換えると、よりランダムなディゾルブが作れます。