日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity-TA 成长之路(二)内置渲染管线-官方篇

發(fā)布時間:2023/12/20 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity-TA 成长之路(二)内置渲染管线-官方篇 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本篇為Unity官方文檔的摘抄集合,為方便后續(xù)翻看。

1、渲染路徑

????????Unity 的內(nèi)置渲染管線支持不同渲染路徑。渲染路徑是與光照和陰影相關(guān)的一系列操作。不同的渲染路徑具有不同功能和性能特征。應(yīng)根據(jù)項目類型以及目標(biāo)硬件,選擇渲染路徑。

????????可在 Graphics 窗口中選擇項目使用的渲染路徑,并可為每個攝像機覆蓋該路徑。

????????如果運行項目的設(shè)備上的 GPU 不支持所選的渲染路徑,則 Unity 將自動使用較低保真度的渲染路徑。例如,在無法處理延遲著色的 GPU 上,Unity 使用前向渲染。

1.1 前向渲染

????????前向渲染是內(nèi)置渲染管線中的默認渲染路徑。這是通用的渲染路徑。

1.1.1 簡介

????????采用前向渲染方式渲染實時光源會非常消耗資源。為了抵消此成本,可以選擇 Unity 在任何一個時間應(yīng)該為每個像素渲染的光源數(shù)量。Unity 會以較低保真度渲染場景中的其余光源:每個頂點或每個對象。

????????如果項目沒有使用大量實時光源,或者光照保真度對項目而言不重要,則此渲染路徑可能是這個項目的不錯選擇。

????????前向渲染根據(jù)影響對象的光源在一個或多個通道中渲染每個對象。光源本身也可以通過前向渲染進行不同的處理,具體取決于它們的設(shè)置和強度。

1.1.2 實現(xiàn)詳細信息

????????在前向渲染中,影響每個對象的一些最亮的光源以完全逐像素光照模式渲染。然后,最多 4 個點光源采用每頂點計算方式。其他光源以球諧函數(shù) (SH) 計算,這種計算方式會快得多,但僅得到近似值。

光源是否為每像素光源根據(jù)以下原則而定:

  • Render Mode 設(shè)置為 Not Important 的光源始終為每頂點或 SH 光源。
  • 最亮的方向光始終為每像素光源。
  • Render Mode 設(shè)置為 Important 的光源始終為每像素光源。
  • 如果上述情況導(dǎo)致光源數(shù)少于當(dāng)前的 Pixel Light Count 質(zhì)量設(shè)置,則按照亮度降低的順序,更多光源采用每像素渲染方式。

每個對象的渲染按如下方式進行:

  • 基礎(chǔ)通道應(yīng)用一個每像素方向光和所有每頂點/SH 光源。
  • 其他每像素光源在額外的通道中渲染(每個光源對應(yīng)一個通道)。

例如,如果某個對象受到許多光源的影響(下圖中的圓形受光源 A 到 H 的影響):

????????讓我們假設(shè)光源 A 到 H 具有相同的顏色和強度,并且所有光源都具有自動渲染模式,因此它們將嚴格按照此對象的以下順序排序。最亮的光源將以每像素光照模式渲染(A 到 D),然后最多 4 個光源以每頂點光照模式渲染(D 到 G),最后其余光源以 SH 進行渲染(G 到 H):

????????光源組會重疊,例如,最后一個每像素光源混合到每頂點光照模式,因此當(dāng)對象和光源移動時,“光射量”(light popping) 較少。

1.1.3 基礎(chǔ)通道

????????基礎(chǔ)通道使用一個每像素方向光和所有 SH/每頂點光源來渲染對象。此通道還會添加著色器中的所有光照貼圖、環(huán)境光照和發(fā)射光照。在此通道中渲染的方向光可以具有陰影。請注意,光照貼圖的對象不會從 SH 光源獲得光照。

?????????在著色器中使用“OnlyDirectional”通道標(biāo)志時,前向基礎(chǔ)通道僅渲染主方向光、環(huán)境光/光照探針和光照貼圖(SH 和頂點光源不包括在通道數(shù)據(jù)中)。

1.1.4 其他通道

????????對于影響此對象的每個額外的每像素光源,需要額外的渲染通道。默認情況下,這些通道中的光源沒有陰影(因此在結(jié)果中,前向渲染支持一個帶陰影的方向光),除非使用 multi_compile_fwdadd_fullshadows 變體快捷方式。

1.1.5 性能注意事項

????????球諧函數(shù)光源的渲染速度_很_快。這些光源的 CPU 成本很低,并且使用 GPU 的_成本基本為零_(也就是說,基礎(chǔ)通道始終會計算 SH 光照;但由于 SH 光源工作方式的原因,無論 SH 光源有多少,成本都完全相同)。

SH 光源的缺點:

  • 按對象的頂點而不是按像素計算。這意味著它們不支持光照剪影和法線貼圖。
  • SH 光照的頻率很低。SH 光源無法實現(xiàn)快速的光照過渡。它們也只影響漫射光照(頻率對鏡面高光而言太低)。
  • SH 光照不是局部光照;SH 點光源或聚光燈在靠近某種表面時“看起是錯誤的”。

總的來說,SH 光源通常足以達到小型動態(tài)對象的光照要求。

1.2 延遲著色

1.2.1 簡介

????????延遲著色是內(nèi)置渲染管線中具有最大光照和陰影保真度的渲染路徑。??

????????延遲著色需要 GPU 支持,并且有一些局限性。這種著色方式不支持半透明對象(Unity 使用前向渲染來渲染這些對象)、正交投影(Unity 對這些攝像機使用前向渲染)或硬件抗鋸齒(但可以使用后期處理效果來獲得類似結(jié)果)。延遲著色對剔除遮罩的支持有限,并會將 Renderer.receiveShadows 標(biāo)志始終視為 true。

????????如果項目具有大量的實時光源并需要高級別的光照保真度,而目標(biāo)硬件支持延遲著色,那么此渲染路徑對于該項目而言可能是一個不錯的選擇。

1.2.2 概述

????????使用延遲著色時,可影響游戲?qū)ο蟮墓庠磾?shù)量沒有限制。所有光源都按像素進行評估,這意味著它們都能與法線貼圖等正確交互。此外,所有光源都可以有剪影和陰影。

????????延遲著色的優(yōu)點是,光照的處理開銷與接受光照的像素數(shù)成正比。這取決于場景中的光量大小,而不管接受光照的游戲?qū)ο笥卸嗌佟R虼?#xff0c;可通過減少光源數(shù)量來提高性能。延遲著色還具有高度一致和可預(yù)測的行為。每個光源的效果都是按像素計算的,因此不會有在大三角形上分解的光照計算。

????????在缺點方面,延遲著色并不支持抗鋸齒,也無法處理半透明游戲?qū)ο?#xff08;這些對象使用前向渲染進行渲染)。此外,它也不支持網(wǎng)格渲染器 (Mesh Renderer) 的接受陰影 (Receive Shadows) 標(biāo)志,并且僅在有限程度上支持剔除遮罩。最多只能使用四個剔除遮罩。也就是說,剔除層遮罩必須至少包含所有層減去四個任意層,即必須設(shè)置 32 個層中的 28 個層。否則,會產(chǎn)生圖形瑕疵。????????

1.2.3 要求?????

????????延遲著色要求顯卡具有多渲染目標(biāo) (MRT)、著色器模型 3.0(或更高版本)并支持深度渲染紋理。從 GeForce 8xxx、Radeon X2400、Intel G45 開始,2006 年以后制造的大多數(shù) PC 顯卡都支持延遲著色。

????????所有至少運行 OpenGL ES 3.0 的移動設(shè)備都支持延遲著色。

注意:使用正交投影 (Orthographic projection) 時不支持延遲渲染。如果攝像機的投影模式設(shè)置為正交模式,則攝像機將回退到前向渲染。

1.2.4 性能注意事項

????????延遲著色中的實時光源的渲染開銷與接受光照的像素數(shù)成比例,并_不_依賴于場景復(fù)雜度。所以小型點光源或聚光燈的渲染成本非常低,如果它們被場景游戲?qū)ο笸耆虿糠终趽?#xff0c;那么成本甚至更低。

????????當(dāng)然,有陰影的光源比沒有陰影的光源的成本高得多。在延遲著色中,對于每個陰影投射光源,仍然需要將投射陰影的游戲?qū)ο箐秩疽淮位蚨啻巍4送?#xff0c;應(yīng)用陰影的光照著色器的渲染開銷高于禁用陰影時的渲染開銷。

1.2.5 實現(xiàn)詳細信息

????????如果對象的著色器不支持延遲著色,則會在延遲著色結(jié)束后使用前向渲染路徑來渲染這些對象。

????????下面列出了 G 緩沖區(qū)中渲染目標(biāo) (RT0 - RT4) 的默認布局。數(shù)據(jù)類型放置在每個渲染目標(biāo)的各個通道中。使用的通道顯示在括號內(nèi)。

  • RT0,ARGB32 格式:漫射顏色 (RGB),遮擋 (A)。
  • RT1,ARGB32 格式:鏡面反射顏色 (RGB),粗糙度 (A)。
  • RT2,ARGB2101010 格式:世界空間法線 (RGB),未使用 (A)。
  • RT3,ARGB2101010(非 HDR)或 ARGBHalf (HDR) 格式:發(fā)射 + 光照 + 光照貼圖 + 反射探針緩沖區(qū)。
  • 深度+模板緩沖區(qū)。

????????因此,默認的 G 緩沖區(qū)布局為 160 位/像素(非 HDR)或 192 位/像素 (HDR)。

????????如果混合光照模式為 Shadowmask 或 Distance Shadowmask,則使用第五個目標(biāo):*RT4,ARGB32 格式:光照遮擋值 (RGBA)。

????????因此,G 緩沖區(qū)布局為 192 位/像素(非 HDR)或 224 位/像素 (HDR)。

????????如果硬件不支持五個并發(fā)渲染目標(biāo),則使用陰影遮罩的對象將回退到前向渲染路徑。 當(dāng)攝像機不使用 HDR 時,發(fā)射+光照緩沖區(qū) (RT3) 采用對數(shù)編碼,因此提供的動態(tài)范圍高于 ARGB32 紋理通常可能提供的范圍。

????????當(dāng)攝像機使用 HDR 渲染時,不會為發(fā)射 + 光照緩沖區(qū) (RT3) 創(chuàng)建單獨的渲染目標(biāo);而是將攝像機渲染到的渲染目標(biāo)(即傳遞給圖像效果的渲染目標(biāo))用作 RT3。????????

1.2.6 G緩沖區(qū)通道

????????G 緩沖區(qū)通道將每個游戲?qū)ο箐秩疽淮巍B浜顽R面反射顏色、表面平滑度、世界空間法線和發(fā)射+環(huán)境+反射+光照貼圖都將渲染到 G 緩沖區(qū)紋理中。G 緩沖區(qū)紋理設(shè)置為全局著色器屬性供著色器以后訪問(_CameraGBufferTexture0 .._CameraGBufferTexture3 指定)。

1.2.7 光照通道????

????????光照通道根據(jù) G 緩沖區(qū)和深度來計算光照。光照是在屏幕空間內(nèi)計算的,因此處理所需的時間與場景復(fù)雜性無關(guān)。光照將添加到發(fā)射緩沖區(qū)。

????????不與攝像機近平面相交的點光源和聚光燈將渲染為 3D 形狀,并會啟用 Z 緩沖區(qū)對場景的測試。因此,部分或完全遮擋的點光源和聚光燈的渲染成本很低。方向光以及與近平面相交的點光源/聚光燈將渲染為全屏四邊形。

????????如果光源啟用了陰影,那么也會在此通道中渲染并應(yīng)用陰影。請注意,陰影并非是“無成本”的;需要渲染陰影投射物,并且必須應(yīng)用更復(fù)雜的光照著色器。

????????唯一可用的光照模型是標(biāo)準(zhǔn) (Standard) 光照模型。如果需要不同的模型,可修改光照通道著色器,方法是將內(nèi)置著色器中的 Internal-DeferredShading.shader 文件的修改版本放入“Assets”文件夾中名為“Resources”的文件夾內(nèi)。然后打開 Graphics 設(shè)置(菜單:Edit > Project Settings,然后單擊 Graphics 類別)。將“Deferred”下拉選單改為“Custom Shader”。然后,更改當(dāng)前使用的著色器對應(yīng)的著色器 (Shader) 選項。

?1.3 舊版延遲 (Legacy Deferred)

????????舊版延遲(光照預(yù)通道)類似于延遲著色,只是采用不同的技術(shù)并進行不同的折中。它不支持 Unity 5 基于物理的標(biāo)準(zhǔn)著色器。

????????從 Unity 5.0 開始,舊版延遲渲染路徑被認為是舊版功能,因為它不支持某些渲染功能(例如標(biāo)準(zhǔn)著色器、反射探針)。新項目應(yīng)考慮改用延遲著色渲染路徑。使用正交投影 (Orthographic projection) 時不支持延遲渲染。如果攝像機的投影模式設(shè)置為正交模式,則攝像機將始終使用前向渲染。

1.3.1 概述

????????使用延遲光照時,可影響對象的光源數(shù)量沒有限制。所有光源都按像素進行評估,這意味著它們都能與法線貼圖等正確交互。此外,所有光源都可以有剪影和陰影。

????????延遲光照的優(yōu)點是,光照的處理開銷與接受光照的像素數(shù)成正比。這取決于場景中的光量大小,而不管接受光照的對象有多少。因此,可通過減少光源數(shù)量來提高性能。延遲光照還具有高度一致和可預(yù)測的行為。每個光源的效果都是按像素計算的,因此不會有在大三角形上分解的光照計算。

????????在缺點方面,延遲光照并不支持抗鋸齒,也無法處理半透明對象(這些對象將使用前向渲染進行渲染)。此外,它也不支持網(wǎng)格渲染器 (Mesh Renderer) 的接受陰影 (Receive Shadows) 標(biāo)志,并且僅在有限程度上支持剔除遮罩。最多只能使用四個剔除遮罩。也就是說,剔除層遮罩必須至少包含所有層減去四個任意層,即必須設(shè)置 32 個層中的 28 個層。否則,將產(chǎn)生圖形瑕疵。

1.3.2 要求

????????延遲光照要求顯卡具有著色器模型 3.0(或更高版本)、支持深度渲染紋理以及具有雙面模板緩沖區(qū)。 2004 年以后制造的大多數(shù) PC 顯卡都支持延遲光照,包括 GeForce FX 及更高版本、Radeon X1300 及更高版本、 Intel 965/GMA X3100 及更高版本。在移動端,所有支持 OpenGL ES 3.0 的 GPU 都支持延遲光照,而一部分 支持 OpenGL ES 2.0 的 GPU 也支持延遲光照(即支持深度紋理的 GPU)。

1.3.3 性能注意事項

????????延遲光照中的實時光源的渲染開銷與接受光照的像素數(shù)成比例,并_不_依賴于場景復(fù)雜度。所以小型點光源或聚光燈的渲染成本非常低,如果它們被場景對象完全或部分遮擋,那么成本甚至更低。

????????當(dāng)然,有陰影的光源比沒有陰影的光源的成本高得多。在延遲光照中,對于每個陰影投射光源,仍然需要將投射陰影的對象渲染一次或多次。此外,應(yīng)用陰影的光照著色器的渲染開銷高于禁用陰影時的渲染開銷。

1.3.4 實現(xiàn)詳細信息

????????使用延遲光照時,Unity 中的渲染過程在三個通道中進行:

??????? (1)基礎(chǔ)通道:渲染對象以生成具有深度、法線和鏡面反射能力的屏幕空間緩沖區(qū)。

??????? (2)光照通道:將先前生成的緩沖區(qū)用于計算光照以進入另一個屏幕空間緩沖區(qū)。

??????? (3)最終通道:再次渲染對象。它們會獲取計算出的光照,將其與顏色紋理相結(jié)合,并添加環(huán)境/發(fā)射光照。

????????如果對象的著色器無法處理延遲光照,則會在此過程結(jié)束后使用前向渲染路徑來渲染這些對象。

1.3.5 基礎(chǔ)通道

????????基礎(chǔ)通道將每個對象渲染一次。視圖空間法線和鏡面反射能力將渲染到單個 ARGB32 渲染紋理中(法線位于 RGB 通道中,而鏡面反射強度位于 A 通道中)。如果平臺和硬件允許將 Z 緩沖區(qū)作為紋理讀取,則不會顯式渲染深度。如果無法將 Z 緩沖區(qū)作為紋理訪問,則會使用著色器替換在另外的渲染通道中渲染深度。

????????基礎(chǔ)通道的結(jié)果是填充了場景內(nèi)容的 Z 緩沖區(qū)以及包含法線和鏡面反射能力的渲染紋理。

1.3.6 光照通道

????????光照通道根據(jù)深度、法線和鏡面反射能力來計算光照。光照是在屏幕空間內(nèi)計算的,因此處理所需的時間與場景復(fù)雜性無關(guān)。光照緩沖區(qū)是單個 ARGB32 渲染紋理,其中在 RGB 通道中包含漫射光照,而在 A 通道中包含單色鏡面光照。光照值采用對數(shù)編碼,因此提供的動態(tài)范圍高于 ARGB32 紋理通常可能提供的范圍。如果攝像機啟用了 HDR 渲染,則光照緩沖區(qū)為 ARGBHalf 格式,并且不執(zhí)行對數(shù)編碼。

????????不與攝像機近平面相交的點光源和聚光燈將渲染為 3D 形狀(的正面),并會啟用對場景的深度測試。與近平面相交的光源也用 3D 形狀進行渲染,但作為背面并進行反向深度測試。因此,部分或完全遮擋的光源的渲染成本很低。如果光源同時與攝像機的遠平面和近平面相交,則不能使用上述優(yōu)化,而光源會被繪制為緊密四邊形并且不進行深度測試。

????????以上說明不適用于方向光;方向光總是渲染為全屏四邊形。

????????如果光源啟用了陰影,那么也會在此通道中渲染并應(yīng)用陰影。請注意,陰影并非是“無成本”的;需要渲染陰影投射物,并且必須應(yīng)用更復(fù)雜的光照著色器。

????????唯一可用的光照模型是 Blinn-Phong。如果需要不同的模型,可修改光照通道著色器,方法是將內(nèi)置著色器中的 Internal-PrePassLighting.shader 文件的修改版本放入“Assets”文件夾中名為“Resources”的文件夾內(nèi)。然后,選擇 Edit > Project Settings > Graphics 窗口。將“Legacy Deferred”下拉選單改為“Custom Shader”。然后,更改當(dāng)前使用的光照著色器對應(yīng)的著色器 (Shader) 選項。

1.3.7 最終通道

????????最終通道將產(chǎn)生最終渲染的圖像。在此階段將再次使用著色器渲染所有對象,這些著色器會獲取光照,將其與紋理相結(jié)合,并添加發(fā)射光照。在最終通道中還會應(yīng)用光照貼圖。在靠近攝像機的位置將使用實時光照,并且僅添加烘焙間接光照。因此會交叉淡入遠離攝像機的完全烘焙光照。

1.4 舊版頂點光照

????????舊版頂點光照 (Legacy Vertex Lit) 是具有最低光照保真度且不支持實時陰影的渲染路徑。這是前向渲染路徑的子集。

????????頂點光照路徑通常在一個通道中渲染每個對象,并為每個頂點計算所有光源的光照。

????????頂點光照路徑是最快的渲染路徑,具有最廣泛的硬件支持。

????????由于所有光照都是在頂點級別計算的,因此該渲染路徑不支持大多數(shù)每像素效果:陰影、法線貼圖、光照剪影和高度細節(jié)化的鏡面高光都不受支持。

1.5 渲染路徑比較

延遲前向舊版延遲頂點光照
功能
每像素光照(法線貼圖、光照剪影)-
實時陰影帶有警告-
反射探針--
深度和法線緩沖區(qū)其他渲染pass-
軟粒子--
半透明對象--
抗鋸齒--
光照剔除遮罩受限受限
光照保真度全部每像素部分每像素全部每像素全部每頂點
性能
每像素光照的成本照射像素數(shù)量像素數(shù)量 * 照射對象數(shù)量照射像素數(shù)量-
正常渲染對象的次數(shù)1每像素光照的數(shù)量21
簡單場景的開銷
平臺支持
PC (Windows/Mac)Shader Model 3.0+ 和 MRT所有Shader Model 3.0+所有
移動端 (iOS/Android)OpenGL ES 3.0 和 MRT、Metal(在搭載 A8 或更高版本 SoC 的設(shè)備上)所有OpenGL ES 2.0所有
游戲主機XB1、PS4所有XB1、PS4、360-

2、使用 CommandBuffer 來擴展內(nèi)置渲染管線

????????包含有關(guān)在內(nèi)置渲染管線中使用 CommandBuffer 的信息。有關(guān)在渲染管線中基于可編程渲染管線使用 CommandBuffer 的信息,請參閱在可編程渲染管線中調(diào)度和執(zhí)行渲染命令。

2.1 CommandBuffer 基礎(chǔ)知識

CommandBuffer? 保存渲染命令列表(例如設(shè)置渲染目標(biāo)或繪制給定網(wǎng)格)。可以指示 Unity 在內(nèi)置渲染管線中的各個點安排和執(zhí)行這些命令,因此,您可以自定義和擴展 Unity 的渲染功能。

使用 CommandBuffer 進行模糊折射

????????可以使用 Graphics.ExecuteCommandBuffer API 立即執(zhí)行 CommandBuffer,也可以進行安排,讓它們在渲染管線中的給定點執(zhí)行。要安排它們,請使用 Camera.AddCommandBuffer API 與CameraEvent 枚舉,以及 Light.AddCommandBuffer API 與 LightEvent 枚舉。要查看 Unity 何時執(zhí)行以這種方式安排的 CommandBuffer,請參閱 CameraEvent 和 LightEvent 的執(zhí)行順序。

????????有關(guān)可以使用 CommandBuffer 執(zhí)行的命令的完整列表,請參閱 CommandBuffer API 文檔。請注意,一些命令僅在某些硬件上受支持。例如,與光線追蹤有關(guān)的命令僅在 DX12 中受支持。

2.2 Command Buffer 示例

標(biāo)題使用 Command Buffers 貼花

????????Unity 博客文章擴展 Unity 5 渲染管線:CommandBuffer 介紹了內(nèi)置渲染管線中的 CommandBuffer,并包含示例項目和示例代碼。它介紹如何使用 CommandBuffer 來實現(xiàn)幾種不同的效果,并包含一個示例項目和示例代碼。項目是為 Unity 的舊版本創(chuàng)建的,但原理相同。

2.3 CameraEvent 事件的執(zhí)行順序

????????CameraEvents 執(zhí)行順序取決于項目使用的渲染路徑。

2.3.1 延遲渲染路徑

  • BeforeGBuffer
  • Unity 渲染不透明幾何體
  • AfterGBuffer
  • Unity 解析深度。
  • BeforeReflections
  • Unity 渲染默認反射和反射探針反射。
  • AfterReflections
  • Unity 將反射復(fù)制到 G 緩沖區(qū)的 Emissive 通道。
  • BeforeLighting
  • Unity 渲染陰影。請參閱 LightEvent 執(zhí)行順序。
  • AfterLighting
  • BeforeFinalPass
  • Unity 對最終通道進行處理。
  • AfterFinalPass
  • BeforeForwardOpaque(僅當(dāng)存在無法以延遲方式渲染的不透明幾何體時調(diào)用)
  • Unity 渲染無法以延遲方式渲染的不透明幾何體。
  • AfterForwardOpaque(僅當(dāng)存在無法以延遲方式渲染的不透明幾何體時調(diào)用)
  • BeforeSkybox
  • Unity 渲染天空盒。
  • AfterSkybox
  • Unity 渲染光環(huán)。
  • BeforeImageEffectsOpaque
  • Unity 應(yīng)用僅不透明的后期處理效果。
  • AfterImageEffectsOpaque
  • BeforeForwardAlpha
  • Unity 渲染透明幾何體以及具有 Screen Space - Camera 渲染模式的 UI 畫布。
  • AfterForwardAlpha
  • BeforeHaloAndLensFlares
  • Unity 渲染鏡頭光暈。
  • AfterHaloAndLensFlares
  • BeforeImageEffects
  • Unity 應(yīng)用后期處理效果。
  • AfterImageEffects
  • AfterEverything
  • Unity 對渲染模式不是 Screen Space - Camera 的 UI 畫布進行渲染。

2.3.2 前向渲染路徑

  • BeforeDepthTexture
  • Unity 渲染不透明幾何體的深度。
  • AfterDepthTexture
  • BeforeDepthNormalsTexture
  • Unity 渲染不透明幾何體的深度法線。
  • AfterDepthNormalsTexture
  • Unity 渲染陰影。請參閱 LightEvent 執(zhí)行順序。
  • BeforeForwardOpaque
  • Unity 渲染不透明幾何體。
  • AfterForwardOpaque
  • BeforeSkybox
  • Unity 渲染天空盒。
  • AfterSkybox
  • Unity 渲染光環(huán)。
  • BeforeImageEffectsOpaque
  • Unity 應(yīng)用僅不透明的后期處理效果。
  • AfterImageEffectsOpaque
  • BeforeForwardAlpha
  • Unity 渲染透明幾何體以及具有 Screen Space - Camera 渲染模式的 UI 畫布。
  • AfterForwardAlpha
  • BeforeHaloAndLensFlares
  • Unity 渲染鏡頭光暈。
  • AfterHaloAndLensFlares
  • BeforeImageEffects
  • Unity 應(yīng)用后期處理效果。
  • AfterImageEffects
  • AfterEverything
  • Unity 對渲染模式不是 Screen Space - Camera 的 UI 畫布進行渲染。

2.4 LightEvent 執(zhí)行順序

在上面的“渲染陰影”階段,對于每個投射陰影的光源,Unity 執(zhí)行以下步驟:

  • BeforeShadowMap
  • BeforeShadowMapPass
  • Unity 渲染當(dāng)前通道的所有陰影投射器
  • AfterShadowMapPass
  • Unity 對每個通道重復(fù)最后三個步驟
  • AfterShadowMap
  • BeforeScreenSpaceMask
  • Unity 將陰影貼圖收集到屏幕空間緩沖區(qū)中并執(zhí)行過濾 *AfterScreenSpaceMask

3、內(nèi)置渲染管線的硬件要求

3.1 摘要 (Summary)

Win/Mac/LinuxiOS/Android游戲主機
延遲光照SM3.0、GPU 支持-
前向渲染
頂點光照渲染-
實時陰影GPU 支持GPU 支持
圖像效果
可編程著色器
固定函數(shù)著色器-

3.2?實時陰影

????????實時陰影 (Realtime Shadows) 適用于大多數(shù) PC、游戲主機和移動平臺。在 Windows (Direct3D) 上,GPU 還需要支持陰影貼圖功能;自 2003 年以后,大多數(shù)獨立 GPU 都支持這些功能,而自 2007 年以后,大多數(shù)集成 GPU 也支持這些功能。從技術(shù)上講,在 Direct3D 9 上,GPU 必須支持 D16/D24X8 或 DF16/DF24 紋理格式;在 OpenGL 上,必須支持 GL_ARB_depth_texture 擴展。

????????移動端陰影 (iOS/Android) 要求具備 OpenGL ES 2.0 和 GL_OES_depth_texture 擴展或者 OpenGL ES 3.0。最需要注意的是,該擴展在基于 Tegra 3 和 Tegra 4 的 Android 設(shè)備上存在,因此陰影在這些設(shè)備上不起作用。

3.3 后期處理效果

????????后期處理效果要求有渲染到紋理功能;此功能通常在本世紀(jì)以來制造的硬件產(chǎn)品上都是受支持的。

3.4 著色器

????????可以編寫可編程著色器或固定函數(shù)著色器。可編程著色器在所有平臺上都受支持,默認為 Shader Model 2.0(桌面端)和 OpenGL ES 2.0(移動端)。如果想要更多功能,可定位更高版本的著色器模型。固定函數(shù)著色器在除游戲主機外的所有平臺上都受支持。

總結(jié)

以上是生活随笔為你收集整理的Unity-TA 成长之路(二)内置渲染管线-官方篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。