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

Unity中Shader的屏幕抓取 GrabPass

這篇具有很好參考價(jià)值的文章主要介紹了Unity中Shader的屏幕抓取 GrabPass。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


前言

Unity中Shader的屏幕抓取 GrabPass


一、抓取

1、抓取指令

屏幕的抓取需要使用一個(gè)Pass

GrabPass{}

GrabPass{“NAME”}

2、在使用抓取的屏幕前,需要像使用屬性一樣定義一下,_GrabTexture這個(gè)名字是Unity定義好的

sampler2D _GrabTexture;

測(cè)試代碼:

Shader "MyShader/P0_10_3"
{
    SubShader
    {
        Tags{"Queue" = "Transparent"}
        //屏幕抓取需要單獨(dú)使用一個(gè)Pass —— GrabPass{} 里面什么都不寫(xiě)
        GrabPass{}
        
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"
            
            struct v2f
            {
                float2 uv : TEXCOORD0;
            };

            //在使用抓取的屏幕前,需要像使用屬性一樣定義一下,_GrabTexture這個(gè)名字是Unity定義好的
            sampler2D _GrabTexture;
            //在頂點(diǎn)著色器的輸入處,不用appdata,直接使用用到的參數(shù),防止 SV_POSITION 重復(fù)定義
            v2f vert (
                float4 vertex : POSITION,
                out float4 pos : SV_POSITION
            )
            {
                v2f o;
                pos = UnityObjectToClipPos(vertex);
                return o;
            }

            fixed4 frag (v2f i,UNITY_VPOS_TYPE screenPos : VPOS) : SV_Target
            {
                
                fixed2 screenUV = screenPos.xy / _ScreenParams.xy;
                //對(duì)抓取的屏幕進(jìn)行采樣
                fixed4 grabTex = tex2D(_GrabTexture,screenUV);
                return grabTex;
            }
            ENDCG
        }
    }
}

效果:
Unity中Shader的屏幕抓取 GrabPass,Unity,unity,游戲引擎

為了優(yōu)化節(jié)省性能:一次抓取就存儲(chǔ)下來(lái)渲染完,再進(jìn)行下次抓取

使用:GrabPass{“NAME”}

使用這個(gè)抓取后,對(duì)應(yīng)的定義名也要換成 NAME

修改后代碼:

Shader "MyShader/P0_10_3"
{
    SubShader
    {
        Tags{"Queue" = "Transparent"}
        //屏幕抓取需要單獨(dú)使用一個(gè)Pass —— GrabPass{} 里面什么都不寫(xiě),或者GrabPass{"_GrabTex"}
        GrabPass{"_GrabTex"}
        
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"
            
            struct v2f
            {
                float2 uv : TEXCOORD0;
            };

            //在使用抓取的屏幕前,需要像使用屬性一樣定義一下,_GrabTexture這個(gè)名字是Unity定義好的
            sampler2D _GrabTex;
            //在頂點(diǎn)著色器的輸入處,不用appdata,直接使用用到的參數(shù),防止 SV_POSITION 重復(fù)定義
            v2f vert (
                float4 vertex : POSITION,
                out float4 pos : SV_POSITION
            )
            {
                v2f o;
                pos = UnityObjectToClipPos(vertex);
                return o;
            }

            fixed4 frag (v2f i,UNITY_VPOS_TYPE screenPos : VPOS) : SV_Target
            {
                
                fixed2 screenUV = screenPos.xy / _ScreenParams.xy;
                //對(duì)抓取的屏幕進(jìn)行采樣
                fixed4 grabTex = tex2D(_GrabTex,screenUV);
                return grabTex;
            }
            ENDCG
        }
    }
}

注意:該操作對(duì)手機(jī)性能比較消耗,一般在中配或高配時(shí)才開(kāi)啟文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-723965.html

到了這里,關(guān)于Unity中Shader的屏幕抓取 GrabPass的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【Unity Shader】屏幕后處理3.0:均值模糊和高斯模糊

    【Unity Shader】屏幕后處理3.0:均值模糊和高斯模糊

    發(fā)現(xiàn)之前學(xué)習(xí)記錄的太過(guò)詳細(xì),導(dǎo)致整理的過(guò)程占用太長(zhǎng)的時(shí)間了,這篇之后博客重要的是掌握實(shí)現(xiàn)過(guò)程,關(guān)于基礎(chǔ)的理論會(huì)更多的放上別人寫(xiě)得更好的文章。 參考:【Unity Shader編程】之十五 屏幕高斯模糊(Gaussian Blur)后期特效的實(shí)現(xiàn) 高斯模糊只是各種模糊方式中的一種。模

    2023年04月08日
    瀏覽(16)
  • 【Unity Shader】屏幕后處理4.0:基于高斯模糊的Bloom

    【Unity Shader】屏幕后處理4.0:基于高斯模糊的Bloom

    原本打算寫(xiě)高斯模糊和雙重模糊兩個(gè)實(shí)現(xiàn)Bloom方法的對(duì)比,但兩個(gè)加在一起篇幅過(guò)長(zhǎng),于是拆成兩篇文章來(lái)進(jìn)行。 學(xué)習(xí)前建議應(yīng)先搞清楚的幾個(gè)概念 HDR LDR ToneMapping 幾種模糊算法 最近一直在學(xué)習(xí)Unity Shader實(shí)現(xiàn)各種后處理效果,Bloom效果就是其中之一,它也是游戲中最常見(jiàn)的效

    2023年04月11日
    瀏覽(37)
  • Unity游戲圖形學(xué) Shader結(jié)構(gòu)

    Unity游戲圖形學(xué) Shader結(jié)構(gòu)

    openGL:SLG跨平臺(tái) =GLSL:openGL shaderlauguge DX:微軟開(kāi)發(fā),性能很好,但是不能跨平臺(tái) =HLSL:high level shader language CG:微軟和Nvidia公司聯(lián)合開(kāi)發(fā),跨平臺(tái),基于c語(yǔ)言開(kāi)發(fā),性能很好 openGL、dx、cg都包含 CG和HLSL包括在 CGPROGRAM...ENDCG 語(yǔ)法快內(nèi) GLSL包括在 GLSLPROGRAM...ENDGLSL 語(yǔ)法快內(nèi) 自己

    2024年02月01日
    瀏覽(17)
  • unity制作游戲,點(diǎn)擊鼠標(biāo)左鍵,展示屏幕震動(dòng)效果

    在Unity中實(shí)現(xiàn)點(diǎn)擊鼠標(biāo)左鍵展示屏幕震動(dòng)效果可以通過(guò)以下步驟進(jìn)行: 創(chuàng)建一個(gè)新的C#腳本,例如\\\"ScreenShake.cs\\\",并將其附加到想要添加屏幕震動(dòng)效果的游戲?qū)ο笊稀?在腳本中定義一個(gè)變量來(lái)控制震動(dòng)的幅度,例如 public float shakeAmount = 0.1f; 。 在Update函數(shù)中檢測(cè)鼠標(biāo)左鍵點(diǎn)擊事

    2024年02月12日
    瀏覽(25)
  • 【游戲開(kāi)發(fā)小技】Unity通過(guò)UI全屏圖來(lái)模糊場(chǎng)景畫(huà)面(Shader | 模糊 | 濾鏡 | Blur)

    【游戲開(kāi)發(fā)小技】Unity通過(guò)UI全屏圖來(lái)模糊場(chǎng)景畫(huà)面(Shader | 模糊 | 濾鏡 | Blur)

    一、前言 嗨,大家好,我是新發(fā)。 以前我寫(xiě)文章都是很長(zhǎng)很長(zhǎng),接下來(lái)我會(huì)嘗試用新的方式來(lái)寫(xiě)博客,盡量簡(jiǎn)短,以實(shí)用為主。同時(shí)也是作為自己零碎的一些記錄,方便查閱。 本文我要說(shuō)的是在 Unity 中通過(guò) UI 全屏圖來(lái)模糊場(chǎng)景畫(huà)面的效果。 二、效果演示 這是沒(méi)用模糊效果

    2024年02月05日
    瀏覽(23)
  • 【Unity Shader】Unity陰影

    【Unity Shader】Unity陰影

    記錄下在unity中如果想實(shí)現(xiàn)陰影,有哪些路子可以選擇,目前看有兩種 1.經(jīng)典的shadowmap 2.planar projection 如果開(kāi)啟renderer組件的cast shadows為on,開(kāi)啟平行光的light組件的shadow type,那么就會(huì)在物體shader中尋找LightMode=ShadowCaster的Pass進(jìn)行渲染 場(chǎng)景有兩個(gè)物體,平面和球體,使用unity內(nèi)

    2024年02月09日
    瀏覽(16)
  • Unity | Shader基礎(chǔ)知識(shí)(第一集:unity中最簡(jiǎn)單的shader)

    Unity | Shader基礎(chǔ)知識(shí)(第一集:unity中最簡(jiǎn)單的shader)

    目錄 一、unity的shader 二、創(chuàng)建一個(gè)shader(在創(chuàng)建時(shí),選前三種都可以) 三、內(nèi)容解讀 1.shader一直都在 2.我們寫(xiě)shader在寫(xiě)什么 四、沒(méi)有被干預(yù)的shader(最簡(jiǎn)單的shader) 相關(guān)閱讀 編寫(xiě)著色器概述 - Unity 手冊(cè) 一、unity的shader unity寫(xiě)的shader并不是真正意義上的shader。 官方解釋:

    2024年02月04日
    瀏覽(18)
  • 【Unity Shader】Unity前向渲染

    ForwardBase Pass(優(yōu)先渲染),渲染一個(gè)逐像素平行光和所有的頂點(diǎn)/球面調(diào)和光,陰影只和平行光有關(guān)系,那陰影應(yīng)該是這個(gè)Pass中實(shí)現(xiàn)的 ForwardAdd Pass(需要和Base配合使用,否則不生效),渲染剩余全部逐像素?zé)艄?Unity會(huì)根據(jù)場(chǎng)景中各個(gè)光源的設(shè)置以及這些光源對(duì)物體的影響程

    2024年02月08日
    瀏覽(27)
  • 【Unity Shader】Shader Graph

    【Unity Shader】Shader Graph

    shader graph 入門: (對(duì)基礎(chǔ)內(nèi)容進(jìn)行詳細(xì)介紹) Shader Graph入門-CSDN博客 unity-shader(入門)_unity3d shader-CSDN博客 各種效果的節(jié)點(diǎn)配置: 【unity造輪子】Unity ShaderGraph使用教程與各種特效案例(2023/12/1更新)_unity特效-CSDN博客 大佬文章里所用的PBR Master更新后已經(jīng)沒(méi)有了,所以參考

    2024年02月01日
    瀏覽(24)
  • Unity Shader variants (shader 變體)

    Unity Shader variants (shader 變體)

    官方地址 https://docs.unity3d.com/cn/2022.2/Manual/SL-MultipleProgramVariants.html 教程可以看這里 https://www.jianshu.com/p/48ad75f0b4b9 https://www.jianshu.com/p/3e6b84317097 變種用我自己的理解就是 能用程序控制的shader 舉個(gè)例子 這里聲明了 a b c d 四個(gè)變量(其實(shí)是開(kāi)關(guān) 下面會(huì)說(shuō)) 記住 #pragma multi_compil

    2024年02月12日
    瀏覽(43)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包