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

Unity Shader #2 Scanning

Unity Shader #2 Scanning

Unity Shader #2 スキャニング

このノートでは、スキャン光(Scanning)とホログラム(Hologram)エフェクトの基本シェーダー実装について説明します。Amplify Shader Editorを使用したURPプロジェクトでの実装方法を紹介します。

スキャン光

基本インターフェース

Package ManagerからAmplify Shader Editorをインポートしてインストールします。Create > Amplify Shaderで新しいシェーダーファイルを作成できます。URPの場合は、UniversalのLitから始めます。

フレネルリムライト

NdotVベクトルを使用します。Nはワールド座標系の頂点法線ベクトル、Vは視線方向ベクトルです。両方とも単位ベクトルである必要があります。2つのベクトルの内積が0に近い(垂直)ほど、その頂点は見えにくくなります。したがって、オブジェクトのエッジにある頂点はNdotVが最小になります。エッジに近いほど、1-NdotVは1に近づきます。

World NormalノードとView DirectionノードでNとVを取得し、内積で乗算します。One Minusノードで反転し、Clampで0-1の範囲に制限します。pow()でエッジをよりシャープにし、定数を掛けて明るさを調整します。

スキャン光のロジック

スキャン光の本質は、テクスチャをオブジェクトのUV上で上下に移動させることです。オブジェクト空間ではなくワールド空間で移動させたいので、ワールド空間でサンプリングし、時間に基づいてy軸で上下に移動させます。

World PositionノードとAppendノードでXY平面の2次元座標を取得し、2次元の速度値を加えて、スキャンテクスチャがXY平面で上下に移動するようにします。