第13回 レンダリングパイプライン入門
描画パイプラインの動作を紐解き、3DCGの画面がどのように作られるかを辿ります。
画面が完成するまでには、デプスの処理、影の生成、半透明描画、ポストプロセスの適用など、多様な工程が関わります。
この一連の流れを追うことで、描画を制御するための基本的な知識を得ることを目的とします。
配布教材の準備
Unity 6.6とURPを使用します。
初めて使用する場合は、初回の環境準備を済ませてください。第13回のUnity Packageをダウンロードし、UnityのAssets > Import Asset Packageから全ての項目をImportします。取り込み手順と必要な描画設定は配布ファイルで確認できます。
使用するScene
Packageの取り込みが完了したら、次のSceneを開いてください。
Assets/UNSLOW/ShaderBasics/Lessons/SecondTerm/13_RenderPipeline/Scenes/13_RenderPipeline.unityこのSceneでは、不透明な物体の手前に屈折処理を伴う半透明のモデルが配置されています。
特に半透明のモデルは描画順序や深度の扱いが重要で、正しく扱うためにはレンダリングパイプラインの理解が求められます。
プロジェクト構造
| パス | 役割 |
|---|---|
Assets/UNSLOW/ShaderBasics/Lessons/SecondTerm/13_RenderPipeline/Scenes/13_RenderPipeline.unity | 不透明物と、背景を屈折させるウサギを比較するScene |
Assets/UNSLOW/ShaderBasics/Shared/Prefabs/Field.prefab | 赤いCapsule、緑のCube、青いSphereと市松模様の床 |
Assets/UNSLOW/ShaderBasics/Shared/Materials | Red、Green、Blue、Grid、RefractionのMaterial |
Assets/UNSLOW/ShaderBasics/Shared/Shaders | 床の模様と、背景の屈折を描くShader |
Assets/UNSLOW/ShaderBasics/Shared/Settings/VolumeProfiles | 色調整、Bloom、色収差、Vignetteなどの設定 |
Assets/Settings | URP、Renderer、Post Processの設定 |
この回のゴール
サンプルシーンでのUnityの画面
- Frame Debuggerで画面が作られる順序を観察し、描画資源と処理段階を対応付けられる。
- 一つの設定変更で最初に差が出る工程を探し、次の確認先を説明できる。
| Inspectorで変更する設定 | 切り替えるもの | 観察する場所 |
|---|---|---|
Directional LightのShadows > Shadow Type | Soft ShadowsとNo Shadows | Capsuleなどが床に落とす影 |
Stanford BunnyのMesh Rendererのチェック | ウサギの表示と非表示 | ウサギ越しに見えるCube、Sphere、床の模様 |
Main CameraのRendering > Post Processing | 画面効果の有効と無効 | 輪郭の色ずれ、明るい部分のにじみ、画面全体の色 |
Gameビューを表示し、Inspectorで一つずつ設定を変えて比べます。静止したSceneなので、Playせずに観察できます。比較前の値を控え、各操作の直後にUndoで元へ戻してください。
今回のポイント
レンダリングパイプラインとは
レンダリングは、端的には3Dデータから2D画像を作る処理です。
内部では多様な処理が段階的に行われ、最終的に画面に表示される2D画像が生成されます。
ここでのパイプラインは、入力を複数の段階で受け渡しながら最終的な出力に伝搬していく仕組みを意味します。
レンダリングパイプラインとは、Mesh、Camera、Light、Textureなどを入力とし、頂点の変換、三角形の画面化、Pixelごとの色計算、深度判定などを経て一枚の画像を作る工程を指します。
UnityのURPはUniversal Render Pipelineの略称で、この描画の順序や使用する工程をUnity向けにまとめたレンダリングパイプラインです。
なぜ描画の流れを学ぶのか
頂点位置、Depth、半透明の描画順、Shadow用Pass、Post Processなど、画面を完成させるまでには多様な工程が関わります。
複雑な描画を成立させるためには、これらの工程の役割や動作の順序を理解しておく必要があります。
意図した通りの描画結果が得られない場合、どの工程に問題があるかを把握していなければ最終的な原因を特定するのは困難です。
また、レンダリングパイプラインの各工程がどのように画面に影響するかを理解していれば、問題の切り分けが容易になる他、無駄な描画を省いた効率的な描画が可能になります。
実習で確かめること
最初に完成画面の描画順を予想し、Frame Debuggerで確かめます。
その後、一つのDraw EventからMesh、Material、Shader、Passを追い、頂点から画面を生成するまでの流れを整理します。
最後に影・ウサギの表示・Post Processを一つずつ切り替え、変化が生じる工程を見つけます。
この回では描画のプロセスとShaderの内部動作を理解することに重点を置き、シェーダーの制作は扱いません。
第13回の目次
最低到達
赤いCapsuleを描くイベントと、手前のStanford Bunnyを描くイベントを見つけましょう。
不透明と半透明の描画順を把握できれば、最低限の描画制御が可能になります。
ライセンス
この回では、以下の外部アセットを使用しています。
| アセット | 作者 | 提供元 | ライセンス |
|---|---|---|---|
| Stanford Bunnyのモデル | Stanford University Computer Graphics Laboratory | Stanford 3D Scanning Repository | 配布元の利用条件 |
既存プロジェクトのFBXを使用し、今回の配布準備では形状を加工していません。元のFBXへの変換・補修の工程は、既存プロジェクトの記録を参照してください。
配布元の条件では、出典を明記した研究利用と無料の再配布が認められています。商用利用や販売製品への収録にはStanfordの許諾が必要です。
Packageを取り込んだ後のAssets/ThirdParty/Stanford/に、利用条件全文のLICENSE-STANFORD-TERMS.txtと、出典・加工について記したREADME.mdを同梱しています。