五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

URP管線自定義后處理組件

2023-06-21 23:23 作者:RRRidah  | 我要投稿

(用于實習(xí),不是為了給大伙講懂,所以沒有展現(xiàn)完整的腳本和實現(xiàn)思路!抱歉)

自定義后處理的終極目標就是適配于內(nèi)置的volume組件中。因為volume功能完善,還有局部后處理的效果,非常強大。在volume組件中添加自定義的后處理,首先就是需要繼承VolumeComponent類,才能夠在volume下拉菜單中添加自己想要實現(xiàn)的后處理效果。

自定義命名空間中添加一個抽象類
繼承該抽象類,為自定義組件命名

光是繼承VolumeComponent是遠遠不夠的,我們后處理的核心邏輯還沒有實現(xiàn)。在內(nèi)置管線中我們可以通過void OnRenderImage()函數(shù)實現(xiàn)后處理。而對于非built-in管線,unity提供了RenderFeature腳本,一個更加靈活,可操作性更高,為SRP而生的后處理框架。因為只提供了這一種方法,我們繞不開這座大山。RenderFeature里有兩個類,創(chuàng)建兩個腳本分別管理這兩個類。

第一個類里有兩個函數(shù)。首先我們需要自己聲明第二個類的字段(把第二個類當(dāng)做成一個RenderPass)。Create()里初始化我們聲明的字段,需要為RenderPass設(shè)置RenderPassEvent,也可以設(shè)置一些自定義的屬性。?AddRenderPasses()主要調(diào)用renderer.EnqueuePass()將我們聲明的字段(RenderPass)添加到渲染序列當(dāng)中去。

第二個類里,OnCameraSetup()用于配置一些渲染數(shù)據(jù),為命令緩沖提前創(chuàng)建temporaryRT。OnCameraCleanup()是在該RenderPass調(diào)用完成后,清除所有分配的資源。?配置好所需要的渲染環(huán)境,最終在Execute()實現(xiàn)我們的后處理邏輯。主要實現(xiàn)流程是:通過CommandBufferPool.Get()調(diào)用一個CommandBuffer(cb),給cb設(shè)置渲染目標(也就是當(dāng)前攝像機的RenderTexture)。然后調(diào)用volumeComp.Render(cb, renderingData.cameraData, source, renderTarget)。volumeComp是我們自定義的后處理腳本!通過下圖獲得。

需要我們在最開始的PostProcessVolumeComponent類里實現(xiàn)Render抽象函數(shù)。這樣在我們自定義的后處理腳本里,繼承PostProcessVolumeComponent類,重寫Render函數(shù)。就可以直接在重寫的Render()方法里寫我們自己的后處理邏輯。

現(xiàn)在來介紹此方法相比于常規(guī)在renderfeature中寫后處理的優(yōu)勢。主要體現(xiàn)在?在Execute()函數(shù)里,我們并不是只實現(xiàn)一個后處理效果,而是先獲取我們所有激活的后處理,添加到自己聲明的List<PostProcessVolumeComponent>。

然后通過先前介紹過的volumeComp.Render方法渲染所有添加到list里的后處理組件。

通過上下文提交cb指令,才能做到真正的調(diào)用

這樣一來,我們就不需要重復(fù)改寫RenderFeature冗雜的代碼。而是簡單創(chuàng)建一個腳本,繼承PostProcessVolumeComponent,重寫里面的抽象方法,在Render里自定義后處理!當(dāng)然還有很多細節(jié)需要考慮,比如各種參數(shù),材質(zhì),渲染隊列,平臺兼容性等等。

這是一個簡單的例子。DrawFullScreenTriangle是自定義的一個usility類中的方法,內(nèi)部是通過cb.DrawProcedural實現(xiàn)的。DrawProcedural是HDRP中一個更加高效且優(yōu)化的draw方法,相比于DrawDynamic會少使用一個 Vertices,雖然調(diào)用的drawcall還是不變。。但跟著unity前進的步伐,還是將所有cb.Blit改成cb.DrawProcedural了。??
同一腳本內(nèi),可以自定義編輯器,跟常規(guī)編輯器一樣,調(diào)用OnInspectorGUI()

內(nèi)置管線中學(xué)習(xí)后處理,基本上只需要涉及到shader。在SRP中,后處理是渲染管線里可以自由支配的一部分。學(xué)習(xí)過程中會自我提升很多?,包括對渲染管線更深入的了解,對frame?debug的使用,對unity提供的后處理組件內(nèi)部也有更全面的認識。最后展示一下自己實現(xiàn)的一些效果。

實現(xiàn)編輯器自由!
景深,比urp自帶的景深?多很多功能!
幾種邊緣檢測算法
兩種電影顆粒效果!
基于物理的Bloom
優(yōu)化后的模糊效果

展示了一些需要基本功底的后處理效果。部分效果實現(xiàn)起來還是挺復(fù)雜的!感謝觀看。

URP管線自定義后處理組件的評論 (共 條)

分享到微博請遵守國家法律
苗栗县| 洛宁县| 突泉县| 行唐县| 鲁甸县| 武川县| 聊城市| 海口市| 桂平市| 宜昌市| 嫩江县| 景宁| 合阳县| 那坡县| 内乡县| 汪清县| 永嘉县| 亳州市| 宁化县| 龙岩市| 厦门市| 集安市| 通海县| 光泽县| 江陵县| 南川市| 探索| 利川市| 娱乐| 东安县| 买车| 大兴区| 永新县| 婺源县| 承德市| 横峰县| 关岭| 洪洞县| 高要市| 凤翔县| 青龙|