国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

URP | 后處理-Bloom效果

2023-03-04 16:33 作者:那個(gè)人真狗  | 我要投稿

后處理部分快完結(jié)了,

前看目錄

這部分前面是原來制作的一部分,參考

游戲 Bloom 實(shí)現(xiàn)方法 - 嗶哩嗶哩 (bilibili.com)


Unity 官方的Bloom就已經(jīng)很好了,這里只是學(xué)習(xí)方法原理

目的

  • Bloom的基本原理與效果

  • Bloom與HDR的關(guān)系

  • Bloom在URP中的實(shí)現(xiàn)過程

實(shí)現(xiàn)效果

Bloom基本原理

詳細(xì)介紹

游戲 Bloom 實(shí)現(xiàn)方法 - 嗶哩嗶哩 (bilibili.com)



這里直接制作過程

制作過程

這里直接URP實(shí)現(xiàn) ,

  • 這是Unity 默認(rèn)

  • 我們以這個(gè)效果為參考.

RendererFeature

前準(zhǔn)備一個(gè)基礎(chǔ)的后處理管線,可以實(shí)現(xiàn)Shader的效果,

基礎(chǔ)管線我們處理完成就,實(shí)現(xiàn)基礎(chǔ)的顯示Shader,我們接下來我們處理Shader。


Shader

因?yàn)槲覀兊腷loom分 4部分來,處理大部分都是在Shader階段處理。

Shader 部分的分成4個(gè)步驟流程

  • 獲取當(dāng)前圖像亮度高的區(qū)域

  • Box模糊

  • 使用疊加模式 和 Box模糊

  • 模糊后的圖疊加到原圖

定義一個(gè)基礎(chǔ)Shader

這個(gè)Shader 是一個(gè)反色效果,是檢查我們當(dāng)前的管線是否正確。

這里Shader我們準(zhǔn)備執(zhí)行4個(gè)Pass來處理我們的不同階段。



1. 提取亮部信息

第一個(gè)Pass 類提取亮部信息。

  • 定義一個(gè)函數(shù) 來提取亮部信息

在Pass里,使用函數(shù) 提取輸入的亮度信息。

  • Shader 第一個(gè)Pass 是提取亮度信息



在后處理組件中增加控制變量。

  • 在后處理中增加我們的控制屬性


RendererFeature 中 來綁定我們的數(shù)據(jù)信息

  • 管線中增加后處理關(guān)聯(lián)

  • 效果


  • 我們提取屏幕中顏色信息大于0.8 的數(shù)據(jù)

  • 可以調(diào)整后處理中 Threshold數(shù)值控制提取亮部信息的大小

第一個(gè)Pass我們就算完成,我們看到有2個(gè)階段,

2. 模糊算法

我們新建一個(gè)Pass 來處理模糊,我們使用Box模糊方法

定義一個(gè)函數(shù) 來方便我們調(diào)用

注意:這里 t 是可以控制 模糊的大小

定義一個(gè)變量 來在外部控制模糊的大小

全Pass



擴(kuò)展 _MainTex_TexelSize.xy 和 _MainTex_ST 的區(qū)別

_MainTex_TexelSize

是貼圖 _MainTex 的像素尺寸大小,值: Vector4(1 / width, 1 / height, width, height)

_MainTex_ST

是貼圖_MainTex的tiling和offset的四元數(shù)

_MainTex_ST.xy 是tiling的值

_MainTex_ST.zw 是offset的值

3. 模糊和亮度疊加

為什么需要兩個(gè)模糊,第二個(gè)模糊是疊加模式 ,我們Bloom是有一個(gè)降采樣和升采樣的過程,這樣優(yōu)化疊加方式。

URP | 后處理-模糊算法總結(jié) - 嗶哩嗶哩 (bilibili.com)

修改疊加模式的Pass

我們第三Pass算完成了。接下來處理第四個(gè)Pass,把模糊完的圖和遠(yuǎn)場(chǎng)景的圖進(jìn)行疊加輸出



4. 合并輸出

最后面一個(gè)Pass 來處理 原圖和 模糊后的圖進(jìn)行合并。

shader部分完成,準(zhǔn)備4個(gè)Pass ,我們當(dāng)前是按照好理解的來處理,后面會(huì)合并優(yōu)化。



RendererFeature 實(shí)現(xiàn)效果

第一部分

提取亮度的Pass

  • Render

    定義一個(gè)RT 來提取后面


  • 這個(gè)部分就是獲取亮度信息,和上面的一樣。

后處理Volume 這里我們定義 控制降采樣的 次數(shù) 和控制模糊


第二部分

進(jìn)行降采樣和升采樣


我們前把提取亮部信息的代碼注掉。

這部分可以查看怎么實(shí)現(xiàn)的降采樣方法。

注意:調(diào)用完RT 需要ReleaseTemporaryRT 進(jìn)行釋放。

  • 效果


我們?cè)O(shè)置4次效果,執(zhí)行8次,4次降采樣 4次升采樣。

合并輸出

  • 顯示出提取亮度,我們發(fā)現(xiàn)輸入的素材不是用來的素材圖,所以獲取用來的圖進(jìn)行合并。

  • 在Shader中獲輸入的圖片,儲(chǔ)存到destination

SetGlobalTexture

SetGlobalTexture 是 Unity 中的一種方法,可以將紋理設(shè)置為全局紋理,可以在著色器代碼中被調(diào)用,或者在其他方法中使用。它接受兩個(gè)參數(shù):第一個(gè)參數(shù)是全局紋理的名稱,第二個(gè)參數(shù)是要設(shè)置的紋理。

Shader 里的全局屬性和局部屬性,

增加到Properties 就是局部屬性,Shader里使用?

沒有在 Properties ?里就是 ?全局屬性


注意:第4個(gè)Pass ?_SourceTex 是全局變量,不要增加到 屬性里。


  • 查看Debug

全代碼

效果

到這里就算全實(shí)現(xiàn)完成

整合

我們把Shader整合一下,分成兩部分 第一個(gè)分 pass? 第二部分是 hlsl庫文件。


總結(jié)

  1. 梳理Bloom的流程,學(xué)習(xí)到了都分幾步部分實(shí)現(xiàn),官方流程也是4個(gè)Pass 不同的是 官方 第一個(gè)Pass提取亮度 第二個(gè),是水平模糊 第三個(gè)是垂直模糊,第四個(gè)是 上采樣。

2. 難點(diǎn)是在 降采樣和升采樣,我這里可能處理的比較復(fù)雜,目前沒有能力優(yōu)化的更好。

3. SetGlobalTexture 的使用,可以將紋理設(shè)置為全局紋理 。




資料

綻放 (catlikecoding.com)

【Unity】代碼實(shí)現(xiàn)后期處理Bloom效果 | SuzhiのBlog (1keven1.github.io)

Bloom_嗶哩嗶哩_bilibili

從認(rèn)識(shí)到實(shí)現(xiàn):HDR Bloom in Unity - 知乎 (zhihu.com)


URP | 后處理-Bloom效果的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
大埔区| 泽库县| 杭锦旗| 南岸区| 丰县| 金门县| 铜山县| 恩平市| 郑州市| 宁安市| 红安县| 淮阳县| 德庆县| 康平县| 白朗县| 延吉市| 元江| 公主岭市| 成都市| 叶城县| 松江区| 衡南县| 甘德县| 高台县| 迁安市| 辽中县| 米林县| 天峨县| 饶平县| 洞口县| 吉安市| 三穗县| 安仁县| 微博| 景谷| 临海市| 宜良县| 南丹县| 茌平县| 水富县| 理塘县|