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

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

URP | 后處理-亮度飽和度對(duì)比度

2022-08-26 21:22 作者:那個(gè)人真狗  | 我要投稿


目的

  • 梳理一遍后處理3大模塊Shader,Volume,渲染功能腳本.

  • Volume的使用方法。

  • ScriptableRenderPass 類 和ScriptableRendererFeature類

Shader

  • 前準(zhǔn)備一個(gè)Shader,定義3個(gè)變量控制亮度 飽和度 對(duì)比度

這部分Shader準(zhǔn)備完成,

Volume

我們需要把Shader的數(shù)據(jù)傳到Volume組件里,所以我們定義一個(gè)類,控制Shader的屬性。

  • 新建一個(gè)Volume腳本

這個(gè)是基礎(chǔ) ,我們需要增加IsActive(),是開啟后處理開關(guān)。

  • 我們輸入要控制的屬性

這里默認(rèn)是1 ,

  • 效果展示

擴(kuò)展 還有哪些定義變量的方法。

  • Volume 的所有屬性

自定義變量屬性方法

渲染腳本類

上面?zhèn)z部分準(zhǔn)備好,我們需要把這兩個(gè)屬性關(guān)聯(lián)起來。

我們新建一個(gè)渲染模塊,可以在渲染器里調(diào)用。

ScriptableRendererFeature

  • 新建一個(gè)腳本,繼承ScriptableRendererFeature

    我們使用ScriptableRendererFeature來實(shí)現(xiàn)這一點(diǎn)。ScriptableRendererFeature是URP開放給用戶用來擴(kuò)展自定義渲染功能的入口,我們自己新建類繼承它,其結(jié)構(gòu)如下


RenderPass

  • 定義渲染Pass

  • 這個(gè)腳本方法主要有3個(gè) Setup,Execute和Render

? ? ? ? ? ? Execute 每幀會(huì)調(diào)用一次,
  • 定義 一個(gè)Pass

需要默認(rèn)帶一個(gè)Execute方法

創(chuàng)建需要的屬性

ColorAdjustment ? Volume屬性參數(shù)組件

m_Material ? ?用于后處理的材質(zhì),cmd.Blit()方法需要調(diào)用的參數(shù)

Setup ?| 初始化

對(duì)輸入的紋理,材質(zhì)進(jìn)行初始化

初始化輸入紋理,

初始化輸入的材質(zhì)屬性

Execute | 執(zhí)行

修改Execute方法,在方法中我們通過VolumeManager.instance.stack單例獲取Volume框架中所有的堆棧,在從堆棧中獲取我們上一補(bǔ)創(chuàng)建的屬性參數(shù)組件,由于Execute是每幀調(diào)用,所有該組件也是實(shí)時(shí)更新的。

然后我們使用標(biāo)簽名獲取一個(gè)命令緩沖區(qū),將該命令緩沖區(qū)與Execute的參數(shù)RenderingData渲染信息一起交給Render方法進(jìn)行后處理。

在后處理完成后我們調(diào)用context.ExecuteCommandBuffer(cmd);方法執(zhí)行該命令緩沖區(qū),最后釋放內(nèi)存。

這里我們需要調(diào)用Render 渲染函數(shù), ?我們需要自定義一個(gè)渲染方法。

Render

在Render方法中我們獲取屬性參數(shù)組件中的參數(shù),賦值給材質(zhì)。

  • 前判斷組件是否開啟,

注意:這里是把Shader的屬性和Volume變量關(guān)聯(lián)起來

Renderer Feature 函數(shù)

  • 在RendererFeature處理Pass 的屬性

    設(shè)置三個(gè)參數(shù),公開屬性Shader、私有屬性AdditionPostProcessPass對(duì)象和材質(zhì)

  • 我們這里是使用材質(zhì)計(jì)算的,第一個(gè)是輸入的Shader,在轉(zhuǎn)成材質(zhì)計(jì)算。

  • Create方法中初始化內(nèi)容

    我們定義的Pass初始化到PostPass,在設(shè)置渲染層級(jí)


  • 效果

  • AddRenderPasses 方法

    中通過Shader創(chuàng)建材質(zhì),然后獲取當(dāng)前渲染結(jié)果。

    然后在把當(dāng)前渲染的結(jié)果和我們的材質(zhì)傳入 Pass中,渲染結(jié)果輸出。

  • 前判斷Shader是否為空

檢測(cè)到有Shader創(chuàng)建材質(zhì)。

  • 獲取當(dāng)前渲染結(jié)果

  • 傳入Pass處理修改

這里我們獲取到輸入顏色信息,在獲取到材質(zhì)信息,那就可以執(zhí)行Pass。

  • 效果完成

使用我們的后處理調(diào)整效果

總結(jié)

  • RenderPass 是計(jì)算渲染的內(nèi)容,RenderFeature模塊是輸入Shader,調(diào)用Pass去執(zhí)行結(jié)果。

  • Shader和Volume組件的屬性是在Render 渲染里關(guān)聯(lián)起來的,使用SetFloat方法

這里還有那些設(shè)置屬性

  • 執(zhí)行順序

    是前執(zhí)行RendererFeature模塊—調(diào)用Create方法初始化—AddRenderPasses方法(每幀執(zhí)行)

    -—調(diào)用Pass里Setup方法——調(diào)用Pass增加到渲染隊(duì)列里。

全代碼



URP | 后處理-亮度飽和度對(duì)比度的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
讷河市| 舒兰市| 原平市| 铁岭市| 小金县| 四平市| 仁怀市| 博客| 正宁县| 遵义县| 如皋市| 宜良县| 宁河县| 扎鲁特旗| 许昌市| 沙洋县| 汕尾市| 咸阳市| 卢龙县| 闸北区| 吴江市| 连州市| 金塔县| 香港 | 防城港市| 辉南县| 宿迁市| 社旗县| 特克斯县| 凤台县| 英山县| 新津县| 澄城县| 宣武区| 边坝县| 巴东县| 枞阳县| 台安县| 罗城| 盐源县| 清流县|