国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity內(nèi)置渲染管線升級URP教程

這篇具有很好參考價值的文章主要介紹了Unity內(nèi)置渲染管線升級URP教程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

簡介

URP全稱為Universal Render Pipeline(通用渲染管線),可以提供更加靈活的渲染方案,通過添加Render Feature實現(xiàn)各種渲染效果。并且可以針對移動平臺進(jìn)行專門的優(yōu)化,同時還提供了SRPBatcher提高渲染效率。Unity的一些工具,比如ShaderGraph,也是必須在URP管線下才可以使用,可以說許多方面均優(yōu)于內(nèi)置渲染管線。

所以如果還在使用內(nèi)置渲染管線的,建議盡早升級到URP。通過本文,可以了解到如何從內(nèi)置管線升級到URP。并且記錄了一些升級時可能遇到的問題和解決方法。

一、安裝并配置URP

1.安裝對應(yīng)package

unity urp渲染管線,Unity開發(fā)方案和知識,unity,前端,游戲引擎,圖形渲染

2.創(chuàng)建配置

Create->rendering->Universal pipeline->Pipeline Asset(Forward Renderer)生成兩個配置文件(目前放在Pipeline文件夾下)

unity urp渲染管線,Unity開發(fā)方案和知識,unity,前端,游戲引擎,圖形渲染

Edit->Project Settings->Graphics 界面,將UniversalRenderPipelineAsset拖入

unity urp渲染管線,Unity開發(fā)方案和知識,unity,前端,游戲引擎,圖形渲染

3.統(tǒng)一升級自帶的shader

Edit->Render Pipeline->Universal Render Pipeline-> Upgrade Project Materials to Universal PR Materials

可以將使用默認(rèn)built-inShader升級到URP的Shader

二、關(guān)于內(nèi)置管線升級至URP管線的問題處理

在未使用URP管線的時候,由于一些shader是使用CG語言寫的,而URP并不支持該語言。所以需要將其改為HLSL(High level shader language)編寫。

查看對應(yīng)源文件

1、cginc文件的內(nèi)置函數(shù)可以在Editor引擎安裝目錄下查看? xxx\Editor\2020.1.0f1c1\Editor\Data\CGIncludes

2、hlsl文件則是在工程對應(yīng)的Library文件下可以找到:

以Core.hlsl為例子,頭文件路徑為

Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl

實際在工程中的位置是

xxx\ProjectName\Library\PackageCache\com.unity.render-pipelines.universal@8.2.0\ShaderLibrary\Core.hlsl

宏替換


CGPROGRAM??? ENDCG??? //替換前是CG語言的宏?

HLSLPROGRAM??? ENDHLSL??? //替換后使用HLSL語言的宏

包含的頭文件替換


#include "UnityCG.cginc"http://替換前
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"http://替換后

//----------------------------分割線---------------------------------------

#include "Lighting.cginc"http://替換前
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"http://替換后
??

Tag替換


Tags { "LightMode" = "ForwardBase" } //替換前
Tags { "RenderPipeline" = "UniversalPipeline" }//替換后

對Texutre2D的處理


uniform sampler2D _BumpMap; //替換前是一個sampler2D變量
TEXTURE2D(_MainTex);//替換后需要使用兩個變量 TEXTURE2D和sampler
SAMPLER(sampler_MainTex);

//----------------------------分割線---------------------------------------

float4 mainColor = tex2D(_MainTex, i.tex);//替換前對texture2d的采樣是兩個參數(shù)
float4 mainColor = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.tex);//替換后是
//三個參數(shù)的函數(shù),前兩個參數(shù),就是一開始對聲明替換時的兩個參數(shù).
?

參考文檔

升級Urp

https://www.jianshu.com/p/3fef69e2efb6

https://zhuanlan.zhihu.com/p/147228689

三、場景內(nèi)組件修改

1.多相機(jī)修改

URP管線相機(jī)不再支持相機(jī)的depth屬性。主攝像機(jī)RenderType設(shè)置為base。其他的攝像機(jī)的RenderType 都是Overlay類型。

unity urp渲染管線,Unity開發(fā)方案和知識,unity,前端,游戲引擎,圖形渲染

并且需要將其他相機(jī)加入到主相機(jī)的Stack中

unity urp渲染管線,Unity開發(fā)方案和知識,unity,前端,游戲引擎,圖形渲染

四、如何啟用SRPBatcher

SRP Batcher 是一個渲染循環(huán),可通過許多使用同一著色器變體的材質(zhì)來加快場景中的 CPU 渲染速度。雖然不會減少DC的次數(shù),但是SRPBatcher可以降低準(zhǔn)備DC數(shù)據(jù)的耗時。相關(guān)的官方文檔https://docs.unity3d.com/cn/2020.2/Manual/SRPBatcher.html

注意事項

同一個Shader不能同時啟用SRP Batcher或者Gpu Instance。并且SRP Batcher的優(yōu)先級是最高的。會導(dǎo)致原先可以合批的DC被打斷。

1.設(shè)置

需要在URP設(shè)置中的Advaneced->SRP Batcher打開

unity urp渲染管線,Unity開發(fā)方案和知識,unity,前端,游戲引擎,圖形渲染

2.修改Shader以支持SRPBatcher

需要用CBUFFER_START(UnityPerMaterial)CBUFFER_END,將所有Properties內(nèi)聲明的變量包住。例子如下:


Properties
{
??? _Tint("_Tint", Color) = (1,1,1,1)
??? _MainTex("_MainTex (albedo)", 2D) = "white" {}
??? _Specular ("Specular", Color) = (1, 1, 1, 1)
??? _Gloss ("Gloss", Range(8.0, 256)) = 80
?}
SubShader
{
???? Pass
???? {
???????? CBUFFER_START(UnityPerMaterial)//這里是添加的代碼
??????? ?TEXTURE2D(_MainTex);
???????? SAMPLER(sampler_MainTex);
???????? float4 _MainTex_ST;
???????? float4 _Specular;
???????? float _Gloss;
???????? half4 _Tint;
???????? CBUFFER_END//這里是添加的代碼
????? }
}

需要注意的是,像Properties內(nèi)的紋理變量,雖然聲明的時候只有一個變量,但是相關(guān)的SAMPLER變量也要包在CBUFFER內(nèi)。

unity urp渲染管線,Unity開發(fā)方案和知識,unity,前端,游戲引擎,圖形渲染

修改后如果支持SRPBatcher,在對應(yīng)shader的Inspector界面的SRPBatcher屬性會顯示為compatible

如果是不支持SRPBatcher的Shader對應(yīng)Shader的SRPBatcher屬性會顯示為not compatible,并且會顯示不支持的原因

unity urp渲染管線,Unity開發(fā)方案和知識,unity,前端,游戲引擎,圖形渲染

3.SRPBatcher性能優(yōu)化的檢測工具

1.添加SRPBatcherProfiler.cs文件添加到工程中,代碼庫地址是https://github.com/Unity-Technologies/SRPBatcherBenchmark

2.將SRPBatcherProfiler腳本拖到需要進(jìn)行檢測的場景中,點擊F8顯示/隱藏SRPBatcherProfiler界面,點擊F9打開/關(guān)閉(實際發(fā)現(xiàn)F9功能不好使,無法中途打開關(guān)閉)SRPBatcher功能??梢詫Ρ却蜷_該功能前后的CPU消耗情況。

五.升級URP之后的一些異?,F(xiàn)象

1.Culling mask導(dǎo)致光照的表現(xiàn)不同

升級URP后發(fā)現(xiàn)物體的光照表現(xiàn)不太一樣。經(jīng)過測試發(fā)現(xiàn),在內(nèi)置管線時,light的Culling mask是有效的,而在URP下,Culling mask失效了。多光源的情況下,HLSL和GC兩個Shader通過GetMainLight獲取的光線都是不同的。

處理方式是獲取所有的AddtionalLight,然后根據(jù)light的distanceAttenuation值去判斷,哪個光源是真正作用在目標(biāo)物體上的。(Culling mask校驗通過的光源light.distanceAttenuation不為0)


??????????????? Light light = GetMainLight();
??????????????? if( light.distanceAttenuation == 0)
??????????????? {
???????????????????? int addLightsCount = GetAdditionalLightsCount();//定義在lighting庫函數(shù)的方法 返回一個額外燈光的數(shù)量
???????????????????? for (int idx = 0; idx < addLightsCount; idx++)
???????????????????? {
??????????????????????? Light addlight = GetAdditionalLight(idx, i.worldPos);//定義在lightling庫里的方法 返回一個燈光類型的數(shù)據(jù)
??????????????????????? if(addlight.distanceAttenuation>0)
??????????????????????? {
??????????????????????????? light = addlight;
??????????????????????????? break;
??????????????????????? }
????????????????? ???}
??????????????? }

2.Frame Debugger顯示異常

2020.3.36f1c1版本中,打開FrameDebugger。場景并不會隨著渲染階段而變化

unity urp渲染管線,Unity開發(fā)方案和知識,unity,前端,游戲引擎,圖形渲染

unity urp渲染管線,Unity開發(fā)方案和知識,unity,前端,游戲引擎,圖形渲染

找到相關(guān)文章,該問題是Unity的Bug,在關(guān)閉urp的msaa選項之后,F(xiàn)rameDebugger就可以正常顯示

unity urp渲染管線,Unity開發(fā)方案和知識,unity,前端,游戲引擎,圖形渲染

3.報錯 Shader properties can't be added to this global property sheet. Trying to add _GrabTexture_TexelSize (type 1 count 1)

UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

Shader properties can't be added to this global property sheet. Trying to add _GrabTexture_HDR (type 1 count 1)

UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

這個是因為URP不支持GrabPass導(dǎo)致,處理方法是將Shader中無用的GrabPass刪除,如果需要用到屏幕截圖,修改成HLSL語言,然后利用SAMPLER(_CameraOpaqueTexture);來代替grabTexture文章來源地址http://www.zghlxwxcb.cn/news/detail-578219.html

到了這里,關(guān)于Unity內(nèi)置渲染管線升級URP教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Unity 踩坑系列】項目升級URP/HDRP渲染管線時如何解決材質(zhì)丟失問題 (模型全部為粉紅色)

    【Unity 踩坑系列】項目升級URP/HDRP渲染管線時如何解決材質(zhì)丟失問題 (模型全部為粉紅色)

    在我們創(chuàng)建項目時候如果我們一開始使用的是默認(rèn)內(nèi)置渲染管線,后期項目需要升級到URP或者HDRP渲染管線時有可能會出現(xiàn)預(yù)制體材質(zhì)丟失的問題(原因是大部分資源的預(yù)制體在Unity官方推薦使用URP渲染管線之前,都只是使用默認(rèn)內(nèi)置管線的材質(zhì)。所以并不適配現(xiàn)在的URP渲染管

    2024年02月16日
    瀏覽(35)
  • Unity-3DRPG游戲 學(xué)習(xí)筆記(1)--使用URP渲染管線

    Unity-3DRPG游戲 學(xué)習(xí)筆記(1)--使用URP渲染管線

    教程地址: Unity2020 3DRPG游戲開發(fā)教程|Core核心功能01:Create Project 創(chuàng)建項目導(dǎo)入素材|Unity中文課堂_嗶哩嗶哩_bilibili 創(chuàng)建URP通用渲染管線(2021版本) 1. 打開:Windows--Package Manager--左上角下拉選擇Unity Registry--搜索Universal RP--Install 2.?Project窗口--Assets--右鍵Create--Rendering--URP Asstes

    2024年02月11日
    瀏覽(25)
  • 【Unity URP渲染管線下設(shè)置燈光數(shù)量上限_燈光不顯示問題案例分享】

    【Unity URP渲染管線下設(shè)置燈光數(shù)量上限_燈光不顯示問題案例分享】

    1.我的這個項目是在URP渲染管線下,我在場景里創(chuàng)建了六個點燈,轉(zhuǎn)動物體的時候,發(fā)現(xiàn)燈顯示不全,會一閃一閃的出現(xiàn)。 2.在RenderPipelineAsset配置文件中查看燈光數(shù)量上限,首先在EditProject Setting 3.在Project Setting里選Quality,在Rendering找到UniversalRP Asset 4.選中UniversalRP Asset文件

    2024年02月16日
    瀏覽(50)
  • 渲染管線丟失 /項目升級為URP

    渲染管線丟失 /項目升級為URP

    打開Package Manager 下載Universal RP 2.在project面板中 create = rendering = URP = Pipeline Asset 在 Project Setting 中的 Graphics和Quality選擇URPAsset 如果導(dǎo)入新資源 更新一下RenderPipeline 即可 步驟:Edit=Render Pipeline=Generate Shader

    2024年02月16日
    瀏覽(19)
  • Unity3D學(xué)習(xí)記錄01:URP渲染管線以及3D游戲場景設(shè)置

    Unity3D學(xué)習(xí)記錄01:URP渲染管線以及3D游戲場景設(shè)置

    以下內(nèi)容所使用的版本均為Unity2022.3 先在 Window-Package Manager-Unity Registry 里面搜索添加Universal RP ? Unity中,創(chuàng)建渲染管線的方式為Asset文件夾下右鍵 Create-Readering-URP Asset(with Universal Asset) 會創(chuàng)建以下兩個Pipeline: ?接著在圖中的設(shè)置里添加這兩個渲染管線(Project Setting在Edit窗口下

    2024年02月08日
    瀏覽(102)
  • 【Unity Shader Graph URP渲染管線下的自定義半透明效果_半透明案例分享】

    【Unity Shader Graph URP渲染管線下的自定義半透明效果_半透明案例分享】

    URP的渲染管線下 在項目設(shè)置里找到“Graphic” 找到URP Asset文件 索引到Renderer List文件——“ForwardRenderer” 在這個“ForwardRenderer”文件里找到“Add Renderer Feature” 添加一個渲染對象,類似下圖:Render Object (Experimental) 如圖設(shè)置,將“Event”設(shè)置成 AfterRenderingSkybox ,然后“Layer M

    2024年02月09日
    瀏覽(32)
  • Unity Shader 學(xué)習(xí)筆記(4)URP渲染管線帶陰影PBR-Shader模板 -- 新增可自定義陰影顏色

    Unity Shader 學(xué)習(xí)筆記(4)URP渲染管線帶陰影PBR-Shader模板 -- 新增可自定義陰影顏色

    材質(zhì)面板截圖 功能實現(xiàn)(URP渲染管線下): 1、進(jìn)一步優(yōu)化Shader結(jié)構(gòu)和算法; 2、包含PBR材質(zhì); 3、投射和接收陰影,并升級 支持自定義陰影顏色 ; 4、支持點光源照射(但不支持點光源陰影)。 通用渲染截圖 自定義陰影顏色截圖 完整代碼: 寫在最后: 1、在我的上一篇文

    2024年02月12日
    瀏覽(27)
  • Unity PS5開發(fā) 天坑篇 之 URP管線與HDRP管線部署流程以及出包介紹04

    Unity PS5開發(fā) 天坑篇 之 URP管線與HDRP管線部署流程以及出包介紹04

    目錄 一, URP管線、HDRP管線下的Unity項目部署 1. PS5開發(fā)論壇關(guān)于Unity可支持的版本說明: 2. URP管線下的項目與部署 2.1 Build PS5 URP Project 2.2 運行畫面 3. HDRP管線下的項目與部署 3.1 附上可以運行的畫面: 4. PS5打包方式介紹 4.1 PC串流調(diào)試模式: Build Type: PC Hosted? 4.2 增量包模式: BuildT

    2024年04月22日
    瀏覽(22)
  • 如何通過代碼在Unity設(shè)置URP通用渲染管線資源的畫質(zhì)選項、后處理效果、渲染分辨率、抗鋸齒效果、Renderer Features等效果并制作一個可以設(shè)置它們的UI

    如何通過代碼在Unity設(shè)置URP通用渲染管線資源的畫質(zhì)選項、后處理效果、渲染分辨率、抗鋸齒效果、Renderer Features等效果并制作一個可以設(shè)置它們的UI

    ? ?Hello喔 這里是沒有魚的貓先生,本期文章的主題佬們有看到標(biāo)題了 QWQ ? ?當(dāng)使用Urp管道項目時,我們需要在一個Urp通用管線資源的項目中修改它的各種效果以玩家自己設(shè)置不同的畫質(zhì)需求,那下面這個通用腳本便誕生了,它也許并不適用于所有的場景,但是相信應(yīng)用過它

    2024年02月09日
    瀏覽(33)
  • Unity SRP 管線【第四講:URP 陰影】

    Unity SRP 管線【第四講:URP 陰影】

    在UniversalRenderer.cs/ line 505行處 此處已經(jīng)準(zhǔn)備好了所有渲染數(shù)據(jù)(所有數(shù)據(jù)全部存儲在了renderingData中) 我們只用renderingData中的數(shù)據(jù)初設(shè)置mainLightShadows 進(jìn)入函數(shù) m_MainLightShadowCasterPass.Setup(ref renderingData); 在UniversalRenderer管線創(chuàng)建的時候,我們已經(jīng)做了創(chuàng)建 我們設(shè)置MainLightShado

    2024年02月03日
    瀏覽(56)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包