URPの概要についての調査
概要
Unity初心者の私がグラフィクスパイプラインの処理について調査したので、まとめたい。
モバイル端末での表示が関心事なので、ビルトインパイプラインとURP(Universal Render Pipeline)について調べてみた。
Unityでのグラフィクスパイプライン
まずは公式でどのように書かれているか、ということでグラフィクスパイプラインについてUnityの公式マニュアルをみると
レンダーパイプラインは、シーンのコンテンツを取得し、それを画面に表示する一連の操作を行います。簡単に説明すると、以下のような操作です。
- カリング
- レンダリング
- ポストプロセッシング
使用するレンダリングパイプラインの選択
Unity は以下のレンダリングパイプラインを提供します。ビルトインレンダーパイプラインは Unity のデフォルトの レンダリングパイプラインです。これは汎用レンダリングパイプラインで、カスタマイズのオプションが限られています。
ユニバーサルレンダーパイプライン (URP) はスクリプタブルレンダーパイプラインの 1 つです。素早く簡単にカスタマイズでき、幅広いプラットフォームで最適化されたグラフィックスを作成できます。
HD レンダーパイプライン (HDRP) はスクリプタブルレンダーパイプラインの 1 つです。ハイエンドプラットフォームで最先端の忠実度の高いグラフィックスを作成できます。
Unity のスクリプタブルレンダーパイプライン API を使って、独自の カスタムレンダーパイプライン を作成することができます。
https://docs.unity3d.com/ja/2021.3/Manual/render-pipelines-overview.html
用語説明
カリング:シーンの内、描画するオブジェクトを選別すること
レンダリング:ピクセル当たりの色を決めること
ポストプロセッシング:レンダリングする画像を作成した後に、その画像を加工すること
ということで、構造的には
- ビルトインパイプライン
- SRP (スクリプタブルレンダーパイプライン)
- URP (ユニバーサルレンダーパイプライン) (ローエンド向け)
- HDRP (HDレンダーパイプライン) (ハイエンド向け)
という区分になっている。
SRP (URP)でRenderPassの追加について
色々調べてみたが、この記事が一番わかりやすかったので引用する。
https://shibuya24.info/entry/unity-urp-add-pass
基本的なclassの簡単な相関図は以下のようになっている模様。
スクリプトリファレンスに各クラスの簡単な説明があるので抜粋する。
Class | 説明 | リンク |
---|---|---|
ScriptableRenderer | rendering戦略を決めるもので、どのようにcullingが実行されるかやlightingがされるかを決めるもの | Class ScriptableRenderer | Universal RP | 7.1.8 |
ScriptableRenderPass | URP rendererで使用されるrendering passを定義するもの | Class ScriptableRenderPass | Universal RP | 7.1.8 |
ScriptableRendererFeature | RenderPassをRendererに追加するもの | Class ScriptableRendererFeature | Universal RP | 7.1.8 |
RenderPipeline | Unityがframeを描画する一連のコマンドや設定を定義するもの | Rendering.RenderPipeline - Unity スクリプトリファレンス |
ScriptableRenderContext | custom render pipelineが用いるコマンドや状態を定義するもの | Rendering.ScriptableRenderContext - Unity スクリプトリファレンス |
Frame Debugとドローコールについて
Unityの機能のFrame Debugを使うと、ドローコールの順が見える。
どの順で何の命令が実行されているかが見えるので、処理の理解と最適化に役立つと思う。
https://docs.unity3d.com/ja/current/Manual/FrameDebugger.html
Frame Debugをみると、実行されているRendererが確認できる。
参考リンク集
SRPについての公式マニュアル:https://docs.unity3d.com/ja/2021.2/Manual/srp-using-scriptable-render-context.html
SRPについてのUnity公式ブログ:https://blog.unity.com/ja/technology/srp-overview
スクリプトリファレンス:Rendering.ScriptableRenderContext - Unity スクリプトリファレンス
Rendering.RenderPipeline - Unity スクリプトリファレンス
SRP Core | Core RP Library | 10.7.0
終わりに
これからもUnityのグラフィクスについての調査をして、まとめていきたい。
各Classについても詳細に調べたり、Shaderとの関係や処理についても調べてまとめたい。