Unity ShaderGraph チュートリアル - 高度なシェーダー (水面、雪、デジタル ワイヤーフレーム)

1.水面(1)

計算式: シーン深度ノード深度 - スクリーン空間位置の W ベクトル = 半透明オブジェクトと不透明オブジェクトの交差エッジ

原則: シーン深度ノードの深度には透明ピクセルが含まれますが、スクリーン空間 w ベクトルには透明ピクセルは含まれません。

注: 深度値を読み取るには、UniversalRP-xxxQuality インスペクター パネルの深度テクスチャ オプションをオンにする必要があります。

(1) フラグメントシェーダ部分:

(2) 頂点シェーダ部

 効果:

2.水面(2) 

実現効果: 水面の滑らかさ、水中のオブジェクト、影の歪み効果

(1) 平滑性

float パラメータを通じて滑らかさを簡単に制御します

 (2) ディストーションエフェクト

        画面上の色と水面の色を混合して、シーン内にレンダリングされた不透明なオブジェクトの画面座標に一定の歪みを生じさせ、それを現在の色と組み合わせて屈折効果をシミュレートします。

注: シーン カラー ノードを使用するには、UniversalRP-xxxQuality インスペクター パネルで不透明テクスチャのチェック マークをオンにする必要があります。

シーンカラーと元の基本カラーlerpは混合後にすでに透明度値を持っているため、元の透明度を個別に出力する必要はありません。

3. 雪

        ベクトル A とベクトル B の内積 Dot (A, B) = |A|・|B|・CosQ は、雪の方向 A と積雪面 B の内積を計算し、雪が積もるかどうかを決定します。差額に基づいて累積されます。

法線ベクトル ノードは、現在の頂点の法線方向をワールド空間に変換するベクトルです。

4. デジタルワイヤーフレーム

5.シェーダーはフレームアニメーションを実装します

 行(行)取得:行 = インデックス(要素インデックス) / n

 列(col)取得:col=index-(row-1)*m

U のオフセット: uOffset = col * 1/m

V のオフセット: vOffset = 1-(row+1)/n

計算された動的フレームレートインデックスを固定値のframeindexに置き換えて、フレームアニメーションの動的再生を実現します。

 

おすすめ

転載: blog.csdn.net/qq_29296473/article/details/132580555