🔧
URPで歪みシェーダーの実装
前書き
URPで背景のバッファの取得とその使用方法をまとめました。
サンプルはGitHubに上げています。
環境
Unity2020.3.14f1
Universal RP 10.5.1 (ForwardRenderer)
Shader Graph 10.5.1
実装方法
描画されたバッファを取得する
Universal Render Pipeline Asset
のOpaque Texture
にチェックを入れます。
ShaderGraphではSceneColor
ノードでOpaqueTexture
を取得できます。
入力はUV
、出力はColor
です。
歪ませる
歪みはテクスチャをサンプリングする際のUVをずらすことで表現できます。
サンプルではGradient Noise
ノードを使用してUVをずらしています。
出力結果
おまけ:ノイズテクスチャをUVに適用する
ノイズテクスチャをスクロール
タイリングやオフセットは専用のTiling And Offset
ノードがあり、Offset
にTime
ノードのTime
を入れると時間経過でスクロールします。
ノイズをUVに加算する
ノイズテクスチャは白黒で表現されており、値としては0~1になっています。
このまま使っても良いのですが、UVが全体的にずれることになり、実物と見える位置が大きく異なります。
そこで使うのがRemap
ノードです。
このノードは与えられた数値を指定した数値範囲にマッピングしてくれる優れものです。
今回では0~1
を-0.01~0.01
の範囲にリマッピングしています。
あとは出力された値をScreenPosition
と足し合わせることでUVがずれ、歪みとして表現されます。
最後に
URPではGUIでチェックを入れ、ShaderGraphでテクスチャが取得ができるので非常に簡単でした。
参考文献
転載元
Discussion