そろそろShaderをやるパート83 レンダーパイプラインについて
そろそろShaderをやります
そろそろShaderをやります。そろそろShaderをやりたいからです。
パート100までダラダラ頑張ります。10年かかってもいいのでやります。
100記事分くらい学べば私レベルの初心者でもまあまあ理解できるかなと思っています。
という感じでやってます。
※初心者がメモレベルで記録するので
技術記事としてはお力になれないかもしれません。
レンダーパイプライン
まず、前提の理解として「Built-in Render Pipeline」というものがあります。
最初からUnityに組み込まれていてそのまま利用することを前提としたレンダーパイプラインです。
レンダーパイプラインとは、オブジェクトを画面に描画するまでの様々な工程群(カリング、座標変換、陰影計算、ラスタライズなど)を表す言葉です。
【引用元】:Unityのレンダーパイプライン
私がこの記事に至るまでにZennに書いてきた過去の記事は「Built-in Render Pipeline」を前提としたものです。(ShaderGraphは除く)
そして、「Built-in Render Pipeline」とは別のレンダーパイプラインとして存在するのが「Scriptable Render Pipeline」です。「Scriptable Render Pipeline」を利用することにより、C#スクリプトを使ってレンダリングを制御することができます。
そして、この「Scriptable Render Pipeline」をもとに作られたのが、「Universal Render Pipeline(URP)」と「High Definition Render Pipeline(HDRP)」です。
URP、HDRPはSRPのテンプレートのような存在です。目的に応じてそれぞれを使い分けることができます。
自身のプロジェクトにどのレンダーパイプラインを使うべきかはUnity公式マニュアルに記載があります。
【引用元】:Choosing and configuring a render pipeline and lighting solution
簡易で要約すると以下です。
レンダーパイプライン | 利用が推奨される条件 |
---|---|
Built-in Render Pipeline | 外部アセットに強く依存している。対象となるプラットフォームが多い。 |
URP | 外部アセットに依存していない。対象となるプラットフォームがモバイル端末やWebGLなどに限られており、想定される実行環境がロースペックである。 |
HDRP | 外部アセットに依存していない。対象となるプラットフォームがPCやハイスペックな実行環境であり、ハイエンドな表現が必要である。 |
Custom Scriptable Render Pipeline | 上記に当てはまらないフルカスタムしたいシチュエーション。Graphicsに高い専門性を持っている。 |
このようにレンダーパイプラインは1つのプロジェクト内で共存できるものではありません。
プロジェクトのUnityバージョンによっては切り替え可能ですが、いろいろな置き換え作業が発生して超大変です。
Discussion