Unreal3 DirectX 11 中的延遲著色

2021-06-02 19:56:11 字數 1101 閱讀 1518

概述

延遲著色是一項可以更加高效地渲染動態光源的技術,但是它的功能設定具有侷限性。在著色之前呼叫傳統的 ue3 光照,因為動態光照計算會與場景的網格物體渲染同時進行。採用延遲著色後,渲染這些網格物體的時候會將諸如漫反射顏色這樣的材質屬性儲存在渲染目標(被稱為 gbuffer)中,但是沒有進行光照。這樣,在後續的『延遲』渲染中,每束光源都會在 gbuffer 中查詢給定畫素的材質屬性,然後根據這些屬性計算光照。

儲存在 gbuffer 中的材質屬性視覺化。

使用延遲著色渲染的光源要比使用直向光照渲染的光源快 10 倍。在 gdc 2011 技術演示中,其中演示的場景裡有 123 個動態光源,使用延遲著色對所有光照進行渲染,角色**和頭髮上的光照除外。注意,延遲著色不會加速動態陰影,它已經在 ue3 中延遲,所以它不允許您具有上百上千的動態陰影光源。

gdc 2011 技術演示的螢幕截圖,其中顯示了 123 個用來照亮角色和環境的動態光源的漫反射部分。

gdc 2011 技術演示的螢幕截圖,其中使用延遲著色照亮的畫素已經被塗抹為綠色。

大體說來,延遲著色的目的是進行透明優化使其可以與標準直向光照結合使用。目前還沒有可以顯示場景中哪些部分使用延遲著色以及哪些部分使用直向渲染的工具,但是這些事實上很有用,我們計畫新增此類工具。

限制 目前,僅在滿足以下條件後使用延遲著色:

材質是透明的,使用的是 phong 光照模式,沒有使用次表面散射網格物體使用的是其中乙個受支援的光照通道 (dynamic, cinematic 1-3)光源是乙個可移動的點,使用其中乙個受支援的光照通道 (dynamic, cinematic 1-3) 的點光源或方向型光源

此外,在使用延遲著色照亮的情況下材質屬性會受到限制:

材質漫反射值限定在 0 到 1 之間材質高光值限定在 0 到 1 之間材質高光強度限定在 0 到 500 之間

過場動畫光照

通常使用光照通道進行過場動畫光照以控制哪些光源作用於哪些物件,其中有一組單獨的光源作用於環境中的過場動畫角色。角色和環境光源仍然可以延遲進行渲染,前提是只使用了 dynamic 和 cinematic 1-3 光照通道。

此外,使用 bnonmodulatedselfshadowing 或 bselfshadowonly 的光源具有使用延遲著色的快速方法。

DirectX學習 數學基礎 1

向量的基本運用 建立3d向量 typedef struct d3dxvector3 public d3dvector d3dxvector3 const float d3dxvector3 const d3dvector d3dxvector3 const d3dxfloat16 d3dxvecto...

DirectX 渲染 學習筆記 1

在2d遊戲中乙個遊戲的渲染部分一般有如下共同的資訊 紋理貼圖和精靈 精靈是一種特殊的物件型別.一般是出現在螢幕上的2d和3d圖形元素。在2d遊戲中,精靈不僅僅表示角色,還可以表示背景,遊戲物件,和任何單個的元素,甚至是能夠繪製出來的項 頂點 定義在遊戲圖形中的形狀其實是一系列點以及它們之間相互連線的...

DirectX 龍書 畫鏡子 1

首先把一些概念強化一下 各種buffer,dx裡面有targetbuffer,zbuffer和stencilbuffer,在建立device時有乙個引數是d3dpresent parameters結構物件,這個結構裡面有一些欄位在此提出來再記一下 d3dpresent parameters d3 d...