[toc]
レンダリングパイプライン(RenderingPipeline)
1. 全体の流れ
- Application ステージ
- ジオメトリー ステージ(Geometry Processing)
- ラスタライズ ステージ (Rasterisation)
- Pixel Processing ステージ
- Post Processing //現在のゲーム制作として重要な一環です。
2. Application ステージ
一般的はCPUで実行する
-
シーンデータの準備
オブジェクトの頂点座標、uv座標、positon、rotation、Scaleなど
ライティングデータ
-
加速アルゴリズム/Culling
見えないオブジェクトをカリング(Culling)する。よく使われているアルゴリズムはBVH(Bounding Volume Hierarchy)、八分木(Octree)
-
レンダリングステータスの設定
Batching、レンダリング順番、レンダリングターゲット(Framebuffer/RenderTarget)、レンダリングモード(Forward/Deferred)
-
DrawCallを使って、データをGPUに輸出
頂点データ,MVPマトリクスなど
3. ジオメトリー ステージ(Geometry Processing)
GPUで実行する
-
Vertex Shadering
-
Optional Vertex Processing
-
テッセレーション (Tessellation) (optional)
ポリゴンをさらに分割して表現することです、画像をより詳細かつ滑らかで現実感のあるものにする技術である
-
Geometry Shader(Optional)
-
-
Projection
-
Clipping
注意:opengl NDC座標xyz範囲(-1,1) d3d NDC座標xy範囲(-1,1) z範囲(0,1)
流れ: ClipSpace -> NDC Space -> ScreenMapping -> ScreenSpace
-
Screen Mapping (NDCSpace範囲は(-1,1)=>ScreenSpace(スクリーンの大きさ(1920x1080など)))
4. ラスタライズ ステージ (Rasterisation)
- 三角形設置 頂点座標とインデックスを使って三角形を設置

-
アンチエイリアシング anti-aliasing
5. Pixel Processing ステージ
-
Fragment Shader
-
Color Blending
- alphaTest
- depth buffer test
- Stencil Test
- Blending
-
RenderTarget
FrameBuffer, RenderTexture
6. Post processing
前のレンダリング完成後、その結果を再処理する
参考資料
Real-Time Rendering 4th Edition
https://www.hardwaretimes.com/pc-graphics-settings-explained-msaa-vs-fxaa-vs-smaa-vs-taa/