目錄
一、HDRP入門(mén)
1.HDRP設(shè)置
?1.1 HDRP配置文件中的全部設(shè)置項(xiàng)
????????1.1.1?Rendering下的Lit Shader Mode
????????1.1.2 Lighting 下的Volumetrics(體積光)和Screen Space Reflection(屏幕空間反射)
2.離線(xiàn)渲染VS實(shí)時(shí)渲染
3.Volume組件
3.1Sky and Fog Volume 天空&霧效
4.光照貼圖烘焙
5.HDRP材質(zhì)和著色器
5.1 Mesh
5.2 Material
5.3 Shader
5.4 Texture
????????5.4.1 Surface Options
? ? ? ? 5.4.2 Surface Inputs
二、RenderPipeline相關(guān)菜單
1.HDRP Wizard窗口
2.LookDev
3.Rendering Debugger
三、HDRP基于物理的渲染
四、總結(jié)
????????首先HDRP是面向高端硬件的,它是集成了各種最先進(jìn)渲染技術(shù)的解決方案。因此它的最佳應(yīng)用場(chǎng)景是PC、主機(jī)平臺(tái)AAA游戲,或者云游戲。(Unity版本為2022.1.2)
一、HDRP入門(mén)
????????自Unity 2018版本開(kāi)始,Unity在原先的標(biāo)準(zhǔn)渲染管線(xiàn)(Built-in Render Pipeline)基礎(chǔ)上增加了可編程渲染管線(xiàn)(Scriptable Render Pipeline,SRP)
????????在SRP發(fā)布之前,所有平臺(tái)都是通過(guò)同一個(gè)標(biāo)準(zhǔn)渲染管線(xiàn)來(lái)做渲染輸出。雖然使用非常方便(無(wú)須選擇適配渲染管線(xiàn)),但是標(biāo)準(zhǔn)渲染管線(xiàn)對(duì)于開(kāi)發(fā)者而言就像一個(gè)黑盒子,里面的渲染邏輯完全不可知。開(kāi)發(fā)者也無(wú)法通過(guò)代碼去控制整個(gè)渲染的流程,無(wú)法選擇需要渲染的內(nèi)容。隨著SRP的發(fā)布,開(kāi)發(fā)者可以通過(guò)C#代碼直接指定渲染內(nèi)容和控制渲染流程,也可以為自己的游戲或者應(yīng)用定制獨(dú)特的渲染管線(xiàn)。
? ? ? ? 為了幫助內(nèi)容創(chuàng)作者盡快使用上SRP,Unity提供了兩個(gè)在創(chuàng)建項(xiàng)目時(shí)就可以選擇的模板:高清渲染管線(xiàn)(High Definition Render Pipeline,HDRP)和通用渲染管線(xiàn)(Universal Render Pipeline,URP)。HDRP目前可用于制作基于PC、Xbox One(或更新)和PlayStation 4(或更新)平臺(tái)的游戲或者應(yīng)用,也支持輸出高端VR應(yīng)用;URP則可用于所有平臺(tái)(包括HDRP支持的所有平臺(tái))的游戲和應(yīng)用開(kāi)發(fā)。HDRP對(duì)于高端移動(dòng)平臺(tái)的支持目前正在研發(fā)之中。
1.HDRP設(shè)置
????????HDRP的全稱(chēng)是High Definition Render Pipeline(高清渲染管線(xiàn))。它是基于Scriptable Render Pipeline(簡(jiǎn)稱(chēng)SRP,中文翻譯為“可編程渲染管線(xiàn)”)實(shí)現(xiàn)的一個(gè)模板。
????????在設(shè)置渲染管線(xiàn)時(shí)我們要用到Project Settings(項(xiàng)目設(shè)置)界面,所以先通過(guò)菜單Edit→Project Settings… 打開(kāi)項(xiàng)目設(shè)置界面。可以把渲染管線(xiàn)的設(shè)置分成以下幾種情況。
- 使用默認(rèn)的內(nèi)置渲染管線(xiàn):如果在項(xiàng)目設(shè)置界面中將Graphics的Scriptable Render Pipeline Settings參數(shù)設(shè)置為None,那么Unity使用的就是內(nèi)置渲染管線(xiàn)。
- 使用HDRP:要將渲染管線(xiàn)設(shè)置為HDRP,需要給Scriptable Render Pipeline Settings關(guān)聯(lián)一個(gè)HDRP配置文件(在Project窗口中)
可以創(chuàng)建多個(gè)擁有不同配置信息的HDRP配置文件,然后在不同的平臺(tái)上使用它們。比如為PC、Xbox One和PlayStation 4分別創(chuàng)建對(duì)應(yīng)的HDRP配置文件,然后在構(gòu)建不同平臺(tái)的應(yīng)用時(shí),手動(dòng)關(guān)聯(lián)相應(yīng)的HDRP配置文件。當(dāng)然也可以通過(guò)腳本來(lái)動(dòng)態(tài)判斷和設(shè)置,所需腳本API為GraphicsSettings.renderPipelineAsset。 - 使用URP(Universal Render Pipeline,中文翻譯為“通用渲染管線(xiàn)”)
?1.1 HDRP配置文件中的全部設(shè)置項(xiàng)
? ? ? ? 注意:我們之前在Edit→Project Settings中的Graphics的Scriptable Render Pipeline Settings參數(shù)設(shè)置為HDRenderPipelineAsset。但在Quality中有多個(gè)levels,每個(gè)level對(duì)應(yīng)的Render Pipeline Asset不同,默認(rèn)是High Fidelity level,對(duì)應(yīng)的Render Pipeline Asset為HDRP High Fidelity,那么該項(xiàng)目起作用的Render Pipeline Asset為HDRP High Fidelity,而不是HDRenderPipelineAsset。unity對(duì)這兩個(gè)設(shè)置的解釋如下:
- Graphics中Scriptable Render Pipeline Settings:This defined the default render pipeline,which Unity uses when there is no override for a given quality level.
- Quality中Render Pipeline Asset:Specifies the?Render Pipeline Asset to use for this quality level.It overrides the value set in the Graphics Setting Window.
????????HDRP的設(shè)置信息分為以下幾個(gè)部分:
- Rendering(渲染)
- Lighting(光照)
- Lighting Quality Settings(光照質(zhì)量設(shè)置)
- Material(材質(zhì))
- Post-processing(后處理)
- Post-processing Quality Settings(后處理質(zhì)量設(shè)置)
- XR(XR相關(guān)設(shè)置)
- Virtual Texturing(虛擬紋理)
????????1.1.1?Rendering下的Lit Shader Mode
????????控制Lit Shader使用的渲染模式,其下有Forward Only、Deferred Only和Both三種模式。
- Forward模式可以提供更多的高級(jí)材質(zhì),但是相應(yīng)的性能消耗較大(比如使用的內(nèi)存通常較大)。
- 如果選擇Both模式,那么HDRP會(huì)預(yù)先生成針對(duì)Forward和Deferred兩種模式的Lit Shader variants(Lit著色器變體),這樣就可以在運(yùn)行時(shí)(Runtime)中針對(duì)不同的相機(jī)在這兩種模式間切換。當(dāng)然,如果選擇Both,內(nèi)存的占用將會(huì)變大,因?yàn)閮?nèi)存中包含了更多的Lit著色器變體。
????????1.1.2 Lighting 下的Volumetrics(體積光)和Screen Space Reflection(屏幕空間反射)
????????如果在Render Pipeline Asset配置文件中勾選了Volumetrics選項(xiàng),那么在Sky and Fog Volume的Fog中的Volumetric Fog配置就會(huì)生效。如果關(guān)閉了Screen Space Reflection選項(xiàng),即使Sky and Fog Volume添加了Screen Space Reflection這個(gè)Volume Override,該界面也會(huì)提醒此功能不可用。(由此可見(jiàn),HDRP配置文件在HDRP項(xiàng)目中所處的中心地位,以及它與單獨(dú)的Volume組件之間的父子關(guān)系)
2.離線(xiàn)渲染VS實(shí)時(shí)渲染
????????所謂DCC,就是Digital Content Creation的縮寫(xiě),即數(shù)字內(nèi)容創(chuàng)作。DCC的范圍包括二維/三維、音頻/視頻剪輯合成、動(dòng)態(tài)/互動(dòng)內(nèi)容創(chuàng)作、圖像編輯等。通常傳統(tǒng)DCC軟件的離線(xiàn)渲染器:畫(huà)質(zhì)好、耗時(shí)長(zhǎng)。渲染一幀畫(huà)面(也就是一張圖片)所需的時(shí)間,按照?qǐng)鼍暗膹?fù)雜度和所用電腦的運(yùn)算能力,從幾秒到幾十小時(shí)甚至上百小時(shí)不等。
????????使用實(shí)時(shí)渲染引擎:畫(huà)質(zhì)沒(méi)離線(xiàn)渲染強(qiáng)、耗時(shí)短??梢栽赨nity編輯器中以每秒幾十幀甚至上百幀的速度渲染畫(huà)面。
????????雖然在實(shí)時(shí)渲染引擎中獲得的畫(huà)面質(zhì)量,還無(wú)法與離線(xiàn)渲染的畫(huà)質(zhì)相提并論,但是兩者之間的差距正在迅速縮小。使用實(shí)時(shí)渲染引擎可以在Unity編輯器中以每秒幾十幀甚至上百幀的速度渲染畫(huà)面。隨著Unity工具鏈的不斷發(fā)展,Unity本身也開(kāi)始逐漸具備傳統(tǒng)DCC工具的部分功能。
3.Volume組件
????????通過(guò)HDRP項(xiàng)目模板來(lái)創(chuàng)建項(xiàng)目,Unity會(huì)為我們自動(dòng)設(shè)置好所有的HDRP高清渲染管線(xiàn)資源,建議保留項(xiàng)目窗口中的HDRPDefaultResources、Presets和Settings三個(gè)文件夾,否則需要手動(dòng)生成HDRP渲染管線(xiàn)相關(guān)的配置文件。
????????HDRP使用Volume框架將天空的光照、陰影、后處理等設(shè)置集中到了一起。在示例場(chǎng)景中有一個(gè)Volume:Sky and Fog Volume負(fù)責(zé)天空、霧效效果。
????????Volume組件:Volume框架其實(shí)就是一個(gè)組件,它和Camera組件本質(zhì)上是一樣的,因?yàn)閮烧叨伎梢员惶砑拥紾ameObject中,為其添加功能。
????????場(chǎng)景中可以有多個(gè)Volume組件,例如Sky and Fog Volume和Post Process Volume,當(dāng)然把這兩個(gè)Volume合二為一,也就是只需要一個(gè)Volume關(guān)聯(lián)一個(gè)Profile。不過(guò)如果合二為一的話(huà),一方面Volume組件上的列表會(huì)變得很長(zhǎng),不利于后期維護(hù)。另一方面如果我們使用多個(gè)Local(本地)的后處理Volume,那么就無(wú)法靈活處理它們了。將具有不同功能的Volume進(jìn)行合理的區(qū)分,將它們關(guān)聯(lián)到不同的Profile,有助于后期維護(hù)和功能管理。
3.1Sky and Fog Volume 天空&霧效
????????Sky and Fog Volume提供基于HDRI的光照,控制曝光度、霧效等。
● Mode(模式)
????????可以將Volume設(shè)置為Global(全局)模式或者Local(本地)模式:
- 如果設(shè)置為全局模式,則Volume上的效果默認(rèn)會(huì)影響整個(gè)場(chǎng)景。
- 設(shè)置為本地模式,則可以為其指定不同形狀的碰撞體,比如Box、Sphere等。
????????設(shè)置為本地模式時(shí),Volume上的效果只會(huì)在相機(jī)與Volume上的碰撞體發(fā)生碰撞時(shí)被觸發(fā)。例如,如果場(chǎng)景中有多個(gè)房間,每個(gè)房間的朝向是不一樣的,則可以為每個(gè)房間設(shè)置一個(gè)本地模式的Volume,比如朝北房間是偏冷色調(diào),朝南房間因?yàn)橛嘘?yáng)光照射進(jìn)來(lái)可以設(shè)置為偏暖色調(diào)。當(dāng)場(chǎng)景中的相機(jī)進(jìn)入北房間時(shí),相機(jī)與此房間中Volume上的碰撞體發(fā)生碰撞,從而觸發(fā)偏冷色調(diào)的本地Volume,所以整個(gè)畫(huà)面看上去就是冷色調(diào)。進(jìn)入南房間時(shí)則用相同的機(jī)制觸發(fā)偏暖色調(diào)的本地Volume,此時(shí)整個(gè)畫(huà)面過(guò)渡變化為暖色調(diào)。
● Profile(配置文件)
????????使用Volume框架的一個(gè)好處是可以把組件和具體的設(shè)置進(jìn)行分離。Volume組件上的所有設(shè)置其實(shí)來(lái)自于關(guān)聯(lián)的Profile。在開(kāi)始設(shè)置之前,需要先創(chuàng)建一個(gè)新的Volume Profile或者關(guān)聯(lián)一個(gè)已經(jīng)存在的Profile。Profile是一個(gè)用Unity資源格式保存到本地磁盤(pán)上的文件,這也意味著我們可以使用別人已經(jīng)創(chuàng)建好的Profile,或者將自己的Profile分享給別人使用(要確保大家使用的Unity版本是互相兼容的)。
● Visual Environment
????????主要用于選擇天空盒的格式??梢赃x擇:
- None(不使用天空盒,不會(huì)有來(lái)自天空盒的環(huán)境光)
- Gradient Sky(使用漸變色程序化生成的簡(jiǎn)單天空盒)
- HDRI Sky(從關(guān)聯(lián)的HDRI高動(dòng)態(tài)圖片采樣獲得天空盒的光照信息)
- Physically Based Sky(基于物理的程序化生成的天空盒,可以用于模擬日夜變換、大氣層厚度等復(fù)雜天空效果)。
● Physically Based Sky
????????如下圖所示,因?yàn)檫x擇的Visual Environment類(lèi)型是Physically Based Sky,所以要為Volume指定一個(gè)Physically Based Sky。
?● Fog
????????在這里可以控制場(chǎng)景中霧氣的濃度、離地面的高度,也可以設(shè)置距離遠(yuǎn)近。還可以配合使用燈光組件的Volumetrics(體積光)屬性創(chuàng)造體積光效果。
● Add Override
????????在Volume組件中,我們可以通過(guò)該按鈕為當(dāng)前Volume添加以下各個(gè)大類(lèi)的配置信息,并通過(guò)Volume組件對(duì)這些效果進(jìn)行調(diào)整。
4.光照貼圖烘焙
????????與傳統(tǒng)的離線(xiàn)渲染不同,實(shí)時(shí)渲染要求以每秒幾十幀的速度生成畫(huà)面,因此我們需要使用很多方法來(lái)減少各方面的計(jì)算量。要讓整個(gè)場(chǎng)景看起來(lái)真實(shí),需要為其生成全局光照信息(Global Illumination)。但是按照目前的算法和設(shè)備的算力,實(shí)時(shí)生成全局光照信息還不現(xiàn)實(shí)。(當(dāng)然,目前最先進(jìn)的實(shí)時(shí)光線(xiàn)追蹤(Realtime Raytracing)功能已經(jīng)可以使用高端顯卡實(shí)現(xiàn),比如Nvidia公司的RTX系列顯卡)。不過(guò)對(duì)于大多數(shù)設(shè)備來(lái)說(shuō),還是需要使用像光照貼圖烘焙(Lightmapping)這樣的技術(shù)來(lái)預(yù)計(jì)算全局光照信息,將計(jì)算好的光照信息保存到光照貼圖(Lightmap)上,然后在實(shí)時(shí)渲染時(shí)將它們應(yīng)用到場(chǎng)景中,來(lái)實(shí)現(xiàn)全局光照的效果。
5.HDRP材質(zhì)和著色器
????????要渲染某個(gè)模型,需要將Mesh、Material、Shader和Texture組合在一起才行:
5.1 Mesh
????????Mesh代表的是模型本身,用于表現(xiàn)形狀。
5.2 Material
????????一個(gè)Mesh可以關(guān)聯(lián)多個(gè)Material,用于控制模型不同部分的材質(zhì)表現(xiàn)。比如我們的模型上有塑料的部分,也有金屬的部分。只用一種材質(zhì)來(lái)表現(xiàn)這兩種完全不同的材料的表面是不可能的,因此需要使用兩種材質(zhì)來(lái)表現(xiàn)塑料和金屬這兩種表面。
5.3 Shader
????????每種Material都與一個(gè)指定的Shader相關(guān)聯(lián)。Shader是一段代碼,包含了用于計(jì)算屏幕上每個(gè)像素點(diǎn)顏色的具體算法。Shader進(jìn)行計(jì)算的時(shí)候會(huì)考慮當(dāng)前場(chǎng)景的光照信息以及在Material上提供的具體配置信息。
????????在HDRP中常用的一個(gè)Shader是Lit Shader。Lit Shader可以模擬非常多的材質(zhì)表面,比如金屬、玻璃、木材等。
5.4 Texture
????????在Surface Inputs參數(shù)集合中可以指定各種Map。這些Map所關(guān)聯(lián)的就是Texture(通過(guò)Photoshop、Substance Painter等工具生成的Bitmap圖片),其用于為模型添加各種細(xì)節(jié)。
????????5.4.1 Surface Options
????????Surface Type(表面類(lèi)型)
????????它有兩個(gè)選項(xiàng):Opaque(不透明的)和Transparent(透明的)。這是一個(gè)基本選項(xiàng),在設(shè)置其他參數(shù)之前,你首先要決定你的物體是不是透明的。
????????Material Type(材質(zhì)類(lèi)型)
????????不管選擇哪種表面類(lèi)型,都會(huì)顯示6種材質(zhì)類(lèi)型:Subsurface Scattering(次表面散射)、Standard(標(biāo)準(zhǔn))、Anisotropy(各向異性)、Iridescence(彩虹色)、Specular Color(高光顏色)和Translucent(半透明)。默認(rèn)選擇的是Standard材質(zhì)類(lèi)型。
????????可以根據(jù)物體表面的特性來(lái)選擇不同的材質(zhì)類(lèi)型。以下列出了部分可應(yīng)用上述6種材質(zhì)類(lèi)型的物體。
材質(zhì)類(lèi)型 | 應(yīng)用 |
---|---|
Subsurface Scattering(次表面散射) | 用于模擬光線(xiàn)與半透明物體交互時(shí)產(chǎn)生的現(xiàn)象,俗稱(chēng)SSS。光線(xiàn)進(jìn)入物體以后,有部分會(huì)發(fā)生散射并模糊,然后再次返回物體外面(出射角度與入射角度不同)??捎糜谀M皮膚、樹(shù)葉、蠟燭、玉器及瓷器釉面等。 |
Standard(標(biāo)準(zhǔn)) | 可用于表現(xiàn)大部分材質(zhì),屬于PBR材質(zhì)制作流程中的Metallic Workflow。此工作流把物體分為金屬和非金屬兩類(lèi)。 |
Anisotropy(各向異性) | 各向異性材質(zhì)適用于模擬拉絲金屬表面或者天鵝絨。這類(lèi)材質(zhì)表面,從不同的角度看過(guò)去,會(huì)出現(xiàn)不同的高光現(xiàn)象。 |
Iridescence(彩虹色) | 彩虹色材質(zhì)的特性是,當(dāng)你的觀察角度或者光照角度變化時(shí),物體表面的顏色會(huì)發(fā)生漸變(漸變色)。這非常適合用于模擬肥皂泡、彩虹色金屬表面和昆蟲(chóng)的翅膀等。 |
Specular Color(高光顏色) | 可用于表現(xiàn)大部分材質(zhì),屬于PBR材質(zhì)制作流程中的Specular Workflow。此工作流類(lèi)似內(nèi)置渲染管線(xiàn)中的Standard (Specular setup)。 |
Translucent(半透明) | 半透明材質(zhì)可以和一張Thickness Map配合使用,用于模擬半透明物體。它和次表面散射材質(zhì)的區(qū)別是,出射光線(xiàn)在射出物體之前不會(huì)變模糊。 |
? ? ? ? 5.4.2 Surface Inputs
- Base Map:用于為模型提供Albedo顏色信息。
- Mask Map:通過(guò)使用一張將信息儲(chǔ)存到RGBA四個(gè)通道中的紋理,來(lái)一并控制Metallic(金屬反光-Red通道)、Ambient Occlusion(環(huán)境光遮蔽-Green通道)、Detail Mask(細(xì)節(jié)遮罩-Blue通道)和Smoothness(光滑度-Alpha通道)。使用一張紋理控制四種屬性可以降低內(nèi)存的占用。
- Normal Map:法線(xiàn)貼圖用于為模型表面添加更多模型上不存在的細(xì)節(jié)。
二、RenderPipeline相關(guān)菜單
1.HDRP Wizard窗口
????????通過(guò)Wizard窗口,我們可以快速檢查當(dāng)前項(xiàng)目是否擁有HDRP項(xiàng)目所要求的設(shè)置。在此窗口中最主要的是HDRP、HDRP+VR和HDRP+DXR這三個(gè)分區(qū)。
- HDRP分區(qū):普通HDRP項(xiàng)目默認(rèn)使用該快速配置檢查列表。如果這里有一項(xiàng)沒(méi)有通過(guò)檢查,則界面上會(huì)出現(xiàn)Fix按鈕,你可以針對(duì)每一項(xiàng)單獨(dú)修復(fù),也可以一鍵修復(fù)所有檢查項(xiàng)。
- HDRP+VR分區(qū):適用于針對(duì)HDRP VR項(xiàng)目的配置檢查。
- HDRP+DXR分區(qū):適用于針對(duì)HDRP光線(xiàn)追蹤項(xiàng)目的配置檢查。
2.LookDev
????????通過(guò)Look Dev窗口,我們可以將模型置于多個(gè)HDRI環(huán)境下,以便進(jìn)行快速查看和效果比較。
3.Rendering Debugger
????????Debug窗口的作用是,我們通過(guò)調(diào)整這里不同的參數(shù),可在Game窗口或者Scene窗口實(shí)時(shí)查看相關(guān)的信息。
????????舉個(gè)例子:如果修改Material→Common Material Property為Albedo(反照率貼圖),則在Game窗口中可以看到模型上只加載Albedo的效果;如果為Normal(法線(xiàn)貼圖),則在Game窗口中可以看到模型上只加載Normal(法線(xiàn)貼圖)的效果。
三、HDRP基于物理的渲染
????????基于物理的意思是,我們把現(xiàn)實(shí)世界中燈光和材質(zhì)的一些本質(zhì)信息用計(jì)算機(jī)圖形學(xué)表達(dá)出來(lái)。比如用真實(shí)世界中的光照單位來(lái)模擬燈光的亮度,模擬真實(shí)世界光線(xiàn)的反射和折射從而實(shí)現(xiàn)全局光照的效果;用真實(shí)世界中物體表面對(duì)光的反應(yīng)對(duì)不同材質(zhì)的屬性進(jìn)行模擬,比如金屬材質(zhì)的反射、玻璃材質(zhì)的反射和折射、皮膚和樹(shù)葉的次表面散射、肥皂泡的彩虹色,以及汽車(chē)油漆外面包裹的清漆等。
????????當(dāng)然,因?yàn)閷?shí)時(shí)渲染要求至少每秒30幀的畫(huà)面輸出,所以我們還無(wú)法完整地模擬真實(shí)世界的各種效果。但是隨著計(jì)算機(jī)算力的進(jìn)一步提升,包括CPU、GPU、存儲(chǔ)、帶寬等的提升,我們會(huì)逐步將這些模擬提升到接近真實(shí)世界的水平。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-483094.html
四、總結(jié)
????????一個(gè)HDRP場(chǎng)景中除了包含模型外,還需要包含相機(jī)、燈光、光照探針、反射探針。然后最重要的是,使用Volume控制整個(gè)場(chǎng)景的光照和后處理效果。也需要使用光照貼圖烘焙技術(shù)來(lái)為場(chǎng)景添加全局光照明。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-483094.html
到了這里,關(guān)于Unity | HDRP高清渲染管線(xiàn)學(xué)習(xí)筆記:示例場(chǎng)景解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!