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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

Unity-TA 成长之路(一)初识渲染管线

發(fā)布時(shí)間:2023/12/20 编程问答 75 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity-TA 成长之路(一)初识渲染管线 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、渲染管線簡(jiǎn)介

????????渲染管線(Rendering Pipeline)其實(shí)就是GPU渲染流程。就是在一個(gè)三維坐標(biāo)系下,基于一個(gè)視點(diǎn),給定三維物體、光源以及照明模式、紋理等信息,如何繪制一幅呈現(xiàn)在視點(diǎn)畫面中的二維圖像的過(guò)程。

??????? Unity官方的簡(jiǎn)介是這樣的:

????????渲染管線執(zhí)行一系列操作來(lái)獲取場(chǎng)景的內(nèi)容,并將這些內(nèi)容顯示在屏幕上。概括來(lái)說(shuō),這些操作如下:

  • 剔除
  • 渲染
  • 后期處理

2、渲染管線分類

??????? 經(jīng)過(guò)Unity的不斷迭代,現(xiàn)在留下的是兩套:Built-In Render(內(nèi)置渲染管線)和SRP(Scriptable Render Pipeline,可編程渲染管線)。

????????Built-In Render,兼容性較好,支持全平臺(tái),帶來(lái)的弊端是效果并不是太好。

????????SRP是可編程渲染管線技術(shù),可用C#腳本定制Unity的渲染過(guò)程,但自己定制渲染管線對(duì)編程要求很高,難度大,所以Unity提供里2個(gè)預(yù)制的管線:通用渲染管線URP(Universal?Render Pipeline)和高清渲染管線HDRP(High Definition Render Pipeline),基本上涵蓋了我們所有的需求,使用時(shí)不需要太底層的技術(shù)要求。

?3、渲染管線對(duì)比

????????只找到了如下的對(duì)比如,基于Unity2018.3的:

????????接下來(lái)也主要針對(duì)這兩種渲染管線做一些對(duì)比說(shuō)明(關(guān)于圖中的具體細(xì)節(jié)對(duì)比,后面再展開(kāi)研究):

????????URP(前身為L(zhǎng)ightweight Render Pipeline --- LWRP輕量級(jí)渲染管線)專注于性能,偏向移動(dòng)端和低端機(jī)器,它擁有很多HDRP相同的功能,但為了在所有平臺(tái)達(dá)到更好的性能,其做了一定的縮減,但這并不意味著URP做不出漂亮的東西。

??????? HDRP專注于高端圖形渲染,以畫面為主 , 偏向高端機(jī)器和影視,但要想得到完成利用HDRP的完美表現(xiàn)能力,需要大量的貼圖,漫反射貼圖、高光貼圖、金屬貼圖、平滑貼圖、AO貼圖、法線貼圖、凹凸貼圖、高度貼圖,所以不是對(duì)效果有特別大需求的話慎入。

????????兩者最大的區(qū)別是對(duì)光照的支持,HDRP提供高級(jí)和豐富的光照功能,比如實(shí)時(shí)全局光照(RealTime GI),能夠模擬光線反射、體積光、能模擬光穿過(guò)空氣中的粒子,還有重頭戲的光線跟蹤,一種新的光線反射和陰影渲染技術(shù),其原理是跟蹤光線在場(chǎng)景中放射的路徑,模擬光線在真實(shí)世界里與物體交互的效果,這技術(shù)對(duì)硬件性能非常高,但能產(chǎn)生非常逼真的效果,可以直接用來(lái)做電影級(jí)別的預(yù)渲染作品。

????????另外一個(gè)區(qū)別是Shader,HDRP提供一系列高端的shader特效,例如高度、細(xì)節(jié)和parallax Maps,分別用于紋理的位移、細(xì)節(jié)和深度模擬,它還支持子面散射,用于模擬光線穿過(guò)很薄的物體,比如皮膚和衣物,它提供了高級(jí)的shader,像是stacklit,能夠讓你同時(shí)使用多個(gè)材質(zhì)的屬性,比如子面散射、彩虹色、各向異性和模糊參數(shù)化。

????????對(duì)于后處理效果,兩者不相伯仲,HDRP獨(dú)占的最重要效果,包括AO(環(huán)境光遮蔽)、自動(dòng)曝光(模擬人眼適應(yīng)不同光線條件的能力)、屏幕空間反射(模擬基于屏幕上可見(jiàn)物體的反射)。URP的AO支持已經(jīng)在做了,但好東西不是都在HDRP,2D光照和陰影就是URP獨(dú)占的,所以如果你在做2D游戲,就選URP。

?????????另外兩個(gè)管線都支持一個(gè)很Cool的特效---相機(jī)堆疊,讓你能夠同時(shí)用多個(gè)相機(jī)渲染。

4、渲染管線的資源創(chuàng)建(以URP為例)

??????? (1)導(dǎo)航到? Windows > Package Manager。

??????? (2)Packages選擇Unity Registry。

??????? (3)找到Universal RP,Install。

??????? (4)Project面板,右鍵,Crate > Rendering > Universal?Render Pipeline > Pipeline Asset (Forward Renderer)

5、切換渲染管線

5.1 激活內(nèi)置渲染管線

??????? 要將活動(dòng)渲染管線設(shè)置為內(nèi)置渲染管線,必須告知 Unity 我們未使用任何基于可編程渲染管線的渲染管線。當(dāng)我們從項(xiàng)目設(shè)置中刪除所有這些引用后,Unity 默認(rèn)使用內(nèi)置渲染管線。

????????為此需要執(zhí)行以下操作:

??????? (1)導(dǎo)航到 Edit > Project Settings > Quality,從而打開(kāi) Quality Settings 窗口。

??????? (2)對(duì)于每個(gè)質(zhì)量級(jí)別,將 Render Pipeline 字段設(shè)置為 None

??????? (3)導(dǎo)航到 Edit > Project Settings > Graphics,從而打開(kāi) Graphics Settings 窗口。

??????? (4)將 Scriptable Render Pipeline Setting 字段設(shè)置為 None

5.2 激活基于 SRP 的 URP、HDRP 或自定義渲染管線

??????? 要將活動(dòng)渲染管線設(shè)置為基于 SRP 的渲染管線,我們必須告訴 Unity 要使用哪個(gè)渲染管線資源。渲染管線資源是一種資源,其中包含有關(guān)要使用的渲染管線以及如何配置該渲染管線的數(shù)據(jù)。

??????? 我們可以擁有多個(gè)渲染管線資源,讓 Unity 以不同配置使用同一渲染管線;例如,可能有一個(gè)適合高端硬件的設(shè)置,一個(gè)適合低端硬件的設(shè)置。

????????在 Unity 編輯器中:

??????? (1)導(dǎo)航到 Edit > Project Settings > Graphics,從而打開(kāi) Graphics Settings 窗口。

??????? (2)在 Project 文件夾中,找到要使用的渲染管線的渲染管線資源。

??????? (3)將渲染管線資源拖放到 Scriptable Render Pipeline Setting 字段。這樣定義了默認(rèn)渲染管線,在給定質(zhì)量級(jí)別沒(méi)有覆蓋值時(shí),Unity 使用該管線。

??????? (4)可選,要為不同的質(zhì)量級(jí)別使用不同的渲染管線資源:導(dǎo)航到 Edit > Project Settings > Quality 打開(kāi) Quality Settings 設(shè)置窗口。

??????? (5)可選,要為不同的質(zhì)量級(jí)別使用不同的渲染管線資源:對(duì)于每個(gè)質(zhì)量級(jí)別,將渲染管線資源拖放到 Render Pipeline 字段。

????????在 C# 代碼中:

???????? 我們以使用 C#代碼設(shè)置渲染管線資源。可以在 Unity 編輯器中以編輯模式或運(yùn)行模式運(yùn)行此代碼,或者在構(gòu)建的播放器中在運(yùn)行時(shí)運(yùn)行此代碼。

????????由于 SRP 是高度可配置的,因此更改活動(dòng)的渲染管線資源可能會(huì)導(dǎo)致更改差異很大(例如從 URP 切換到 HDRP)。在運(yùn)行時(shí)更改渲染管線資源的性能成本相應(yīng)地有所不同。

????????請(qǐng)注意,切換到新的渲染管線資源會(huì)使 Unity 銷毀當(dāng)前的渲染管線實(shí)例,并調(diào)用新渲染管線資源的 CreatePipeline() 方法。根據(jù) SRP 中的代碼,此操作可能在計(jì)算上是資源密集型操作。

????????以下示例代碼顯示了如何設(shè)置存儲(chǔ)在GraphicsSettings.renderPipelineAsset中的默認(rèn)渲染管線資源。

????????請(qǐng)注意,如果已在項(xiàng)目的 Quality Settings 為渲染管線資源指定了質(zhì)量級(jí)別,則當(dāng)前質(zhì)量級(jí)別的渲染管線資源將覆蓋默認(rèn)渲染管線資源。可以如以下代碼所示的方式在 C# 代碼中使用 QualitySettings-renderPipeline API 進(jìn)行更新。

using UnityEngine; using UnityEngine.Rendering;public class SwitchRenderPipelineAsset : MonoBehaviour {public RenderPipelineAsset exampleAssetA;public RenderPipelineAsset exampleAssetB;void Update(){if (Input.GetKeyDown(KeyCode.A)){GraphicsSettings.renderPipelineAsset = exampleAssetA;Debug.Log("Default render pipeline asset is: " + GraphicsSettings.renderPipelineAsset.name);}else if (Input.GetKeyDown(KeyCode.B)){GraphicsSettings.renderPipelineAsset = exampleAssetB;Debug.Log("Default render pipeline asset is: " + GraphicsSettings.renderPipelineAsset.name);}} }

總結(jié)

以上是生活随笔為你收集整理的Unity-TA 成长之路(一)初识渲染管线的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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