最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

URP | 后處理-自定義后處理

2022-07-28 18:18 作者:那個人真狗  | 我要投稿


URP邏輯

主要是有3個模塊組成

  • Volume 模塊

    這個就是后處理組件模塊


  • RenderFeature渲染器模塊

  • Pass模塊

    是編輯后處理核心代碼類。

URP管線設(shè)置后處理


<aside> ?? 創(chuàng)建渲染管線

找到項目中正在使用的PiplineAsset文件(在Edit->ProjectSetting->Quality->Rendering下可以找到項目正在使用的渲染管線文件),如果沒有的話,新建一個Pipline Asset(Project下,右鍵Create->Rendering->URP->Pipline Asset),創(chuàng)建完成后,項目中除了PiplineAsset文件,還會多出一個Forward Renderer文件,在Forward Renderer文件中點擊Add Renderer Feature,就可以添加自定義的后處理效果了。

</aside>

  • 渲染器

現(xiàn)在項目中沒有自定義后處理效果,創(chuàng)建一個。

創(chuàng)建Volume 模塊

我們調(diào)整后處理是在Volume組件調(diào)整,所以我們需要定義一個腳本把參數(shù)穿過來。

  • 新建一個腳本,命名ColorTint 繼承 VolumeComponent類

  • 注意:導(dǎo)入的命名空間是需要注意的。

  • 效果

創(chuàng)建RenderFeature模塊

RenderFeature模塊 是用來設(shè)置Shader以及渲染大體邏輯的,

首先,新建一個繼承ScriptableRendererFeature的腳本,

ScriptableRendererFeature是URP提供給用戶用來擴展自定義渲染功能的入口

注意:導(dǎo)入的命名空間 ?using UnityEngine.Rendering.Universal。

這就是這個類最簡單的框架結(jié)構(gòu)。

  • 效果

這里我們就是把新建的類,在ForwardRenderer里增加使用。

擴展這個類里自帶的倆個函數(shù)(Create 和 AddRenderPasses)是什么功能?

  • Create ?Feature被創(chuàng)建的時候調(diào)用,初始化。

  • AddRenderPasses 每幀都會調(diào)用,渲染攝像機內(nèi)容。

這里是把功能增加,沒有增加任何的實際效果代碼。

這里我們需要設(shè)置窗口,需要獲取當前的渲染邏輯和Shader

  • 開方設(shè)置窗口

  • 創(chuàng)建Pass,并且初始化隊列和Shader

  • 把Pass增加到渲染隊列里

設(shè)置窗口

  • 定義一個 Setting的

  • 現(xiàn)在是設(shè)置完成,公開到界面上。

  • 效果

定義Pass

  • 定義一個Pass ,設(shè)置渲染Pass

前定義一個Pass

在Create里初始化屬性, 定義一個渲染顯示的名字。

注意:這里目前是前把Pass定義好,還沒有引入這里。

目前只是初始化,后面我們在AddRenderPasses里更新。


執(zhí)行PASS模塊

  • 上面定義了渲染Pass,但是執(zhí)行Pass的類還沒有定義,所以報錯。

    在文件下面,定義一個Pass

擴展ScriptableRenderPass這個類是什么?

這個類是可以設(shè)置渲染隊列的

  • 這個類需要繼承一個 Execute(執(zhí)行)的方法函數(shù)

注意:必須重載一個名為Execute的方法,該方法便是邏輯執(zhí)行的地方。

  • 定義需要的一些變量

  • 定義構(gòu)造函數(shù)

判斷一下Shader是否為空

  • 定義一個Setup函數(shù)初始化

在Pass里的算結(jié)束了,我們回到RenderFeature模塊。

Create( )函數(shù)

把ColorTintPass的 初始化Pass完成

  • 上面已經(jīng)制作

  • 效果

AddRenderPasses()函數(shù)

  • 注意:如果出現(xiàn)錯誤檢查是否導(dǎo)入空間導(dǎo)致的。

  • 上面已經(jīng)把初始化的內(nèi)容傳到渲染里了,我們下面開始寫具體執(zhí)行的內(nèi)容

Execute() 函數(shù)

這里是Unity提供給我們的父類函數(shù)Execute的方法,該方法便是邏輯執(zhí)行的地方。,這里我們重寫Execute函數(shù)。

  • 判斷材質(zhì)是否為空

這里判斷是否為什么空,如果為空,提示錯誤。

  • 判斷是否開啟后處理

  • 渲染設(shè)置,獲取到我們的volume組件

擴展

  • 定義函數(shù)的時候 void 和 override void 的區(qū)別?

上面我們可以看到定義函數(shù)有倆種方法一種是void,另一種是 override void

void 自定義函數(shù)方法。

override void ? 是父里已經(jīng)有這個函數(shù),使用(override void)這個重寫這個函數(shù)。 這里還有一個一種使用方法

使用 base 調(diào)用父類里的函數(shù)。


計算渲染

我們定義一個渲染函數(shù) Render()

這里主要是獲取場景渲染結(jié)果-在使用Shader進行調(diào)試輸出。

擴展

#region
#endregion
語法的使用方法。 可以把一個模塊合并起來查看方便

  • 渲染模塊完成,在執(zhí)行階段調(diào)用渲染

Execute()函數(shù)完善

目前所有效果都完成,開始制作調(diào)色Shader

注意:Shader里的屬性和渲染調(diào)用里的變量名字需要一樣。

Shader部分

  • sdader就是最簡單的調(diào)整顏色Shader



  • 我們目前有3個文件,倆個腳本文件,一個Shader文件。

  • 渲染組件里指定Shader,也可以設(shè)置渲染層級

  • 在Volume組件里調(diào)整 顏色,就可以看到效果了,

  • 效果

總結(jié)

  • URP后處理是有4部分組成,

    分別是渲染器(Forward Renderer)— 后處理(Volume) — Pass模塊 ?—Shader組成

  • 腳本里主要模塊

  • ScriptableRendererFeature ?主要是有 設(shè)置模塊(Settings) ?初始化模塊(Create) 執(zhí)行邏輯模塊(AddRenderPasses)

  • ScriptableRenderPass ? ? ? 有4部分 ?設(shè)置渲染事件(ColorTintPass) ? ?初始化函數(shù)(Setup) ? ? 執(zhí)行函數(shù)(Execute) ? ? 渲染函數(shù)(Render)


URP | 后處理-自定義后處理的評論 (共 條)

分享到微博請遵守國家法律
宁波市| 鸡泽县| 呼和浩特市| 西乡县| 永康市| 花莲县| 利辛县| SHOW| 浦北县| 宁河县| 包头市| 饶平县| 紫阳县| 锦州市| 东乡县| 永靖县| 田林县| 昌平区| 昌宁县| 靖远县| 道孚县| 图片| 巴塘县| 盐池县| 略阳县| 祁阳县| 波密县| 洪江市| 尼勒克县| 兰西县| 汕尾市| 禹城市| 铜川市| 岳西县| 遂宁市| 尼玛县| 临湘市| 沿河| 寿光市| 乡城县| 辽中县|