ShaderLab: GrabPass

原文鏈接:https://docs.unity3d.com/Manual/SL-GrabPass.html

? ? ? ? GrabPass是一個特殊的pass類型仙辟,它可以抓取屏幕上顯示的內(nèi)容然后將這個對象繪制到一個紋理中。此紋理可用于后面的pass中以實現(xiàn)更進(jìn)一步的圖像效果。

語法

? ? ? ? GrabPass在subshader內(nèi)部,他有兩種存在形式:

? ? ? ? ·只通過GrabPass{}抓取屏幕內(nèi)容到一張紋理上。這個紋理可以在后面的pass中通過“_GrabTexture”這個名字訪問到。請注意,這種形式的GrabPass會為每個使用它的對象進(jìn)行一次耗時的屏幕抓取工作沦寂。

? ? ? ? ·GrabPass{"TextureName"}抓取當(dāng)前的屏幕內(nèi)容到一張紋理中,但是每幀只會為使用給定紋理名字的的第一個對象執(zhí)行一次淘衙。這個紋理可以在后面的pass中通過給定的名字訪問到传藏。當(dāng)你在場景中有多個對象使用GrabPass時,這是一個更有效率的方法彤守。

? ? ? ? 另外毯侦,GrabPass可以使用Name和Tags命令。


例子

? ? ? ? 這是一個低效的方式來反轉(zhuǎn)先要渲染的顏色:

Shader "GrabPassInvert"

{

? ? SubShader

? ? {

? ? ? ? // Draw ourselves after all opaque geometry

? ? ? ? Tags { "Queue" = "Transparent" }

? ? ? ? // Grab the screen behind the object into _BackgroundTexture

? ? ? ? GrabPass

? ? ? ? {

? ? ? ? ? ? "_BackgroundTexture"

? ? ? ? }

? ? ? ? // Render the object with the texture generated above, and invert the colors

? ? ? ? Pass

? ? ? ? {

? ? ? ? ? ? CGPROGRAM

? ? ? ? ? ? #pragma vertex vert

? ? ? ? ? ? #pragma fragment frag

? ? ? ? ? ? #include "UnityCG.cginc"

? ? ? ? ? ? struct v2f

? ? ? ? ? ? {

? ? ? ? ? ? ? ? float4 grabPos : TEXCOORD0;

? ? ? ? ? ? ? ? float4 pos : SV_POSITION;

? ? ? ? ? ? };

? ? ? ? ? ? v2f vert(appdata_base v) {

? ? ? ? ? ? ? ? v2f o;

? ? ? ? ? ? ? ? // use UnityObjectToClipPos from UnityCG.cginc to calculate

? ? ? ? ? ? ? ? // the clip-space of the vertex

? ? ? ? ? ? ? ? o.pos = UnityObjectToClipPos(v.vertex);

? ? ? ? ? ? ? ? // use ComputeGrabScreenPos function from UnityCG.cginc

? ? ? ? ? ? ? ? // to get the correct texture coordinate

? ? ? ? ? ? ? ? o.grabPos = ComputeGrabScreenPos(o.pos);

? ? ? ? ? ? ? ? return o;

? ? ? ? ? ? }

? ? ? ? ? ? sampler2D _BackgroundTexture;

? ? ? ? ? ? half4 frag(v2f i) : SV_Target

? ? ? ? ? ? {

? ? ? ? ? ? ? ? half4 bgcolor = tex2Dproj(_BackgroundTexture, i.grabPos);

? ? ? ? ? ? ? ? return 1 - bgcolor;

? ? ? ? ? ? }

? ? ? ? ? ? ENDCG

? ? ? ? }

? ? }

}

? ? ? ? 這個shader有兩個pass具垫,第一個pass抓取渲染時在對象后面要顯示的內(nèi)容侈离,第二個執(zhí)行顏色反轉(zhuǎn)。請注意同樣的效果可以通過使用一個反轉(zhuǎn)融合模式更有效率的實現(xiàn)筝蚕。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末卦碾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子起宽,更是在濱河造成了極大的恐慌洲胖,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坯沪,死亡現(xiàn)場離奇詭異绿映,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)腐晾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門叉弦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人藻糖,你說我怎么就攤上這事淹冰。” “怎么了巨柒?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵樱拴,是天一觀的道長凝颇。 經(jīng)常有香客問我,道長疹鳄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任芦岂,我火速辦了婚禮瘪弓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘禽最。我一直安慰自己腺怯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布川无。 她就那樣靜靜地躺著呛占,像睡著了一般。 火紅的嫁衣襯著肌膚如雪懦趋。 梳的紋絲不亂的頭發(fā)上晾虑,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機(jī)與錄音仅叫,去河邊找鬼帜篇。 笑死,一個胖子當(dāng)著我的面吹牛诫咱,可吹牛的內(nèi)容都是我干的笙隙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼坎缭,長吁一口氣:“原來是場噩夢啊……” “哼竟痰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掏呼,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤坏快,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后哄尔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體假消,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年岭接,在試婚紗的時候發(fā)現(xiàn)自己被綠了富拗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸣戴,死狀恐怖啃沪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窄锅,我是刑警寧澤创千,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布缰雇,位于F島的核電站,受9級特大地震影響追驴,放射性物質(zhì)發(fā)生泄漏械哟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一殿雪、第九天 我趴在偏房一處隱蔽的房頂上張望暇咆。 院中可真熱鬧,春花似錦丙曙、人聲如沸爸业。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扯旷。三九已至,卻和暖如春索抓,著一層夾襖步出監(jiān)牢的瞬間钧忽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工纸兔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惰瓜,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓汉矿,卻偏偏與公主長得像崎坊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子洲拇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • <轉(zhuǎn)>我也忘了轉(zhuǎn)自哪里,抱歉,感謝原作者 什么是Shader Shader(著色器)是一段能夠針對3D對象進(jìn)行操作...
    星易乾川閱讀 5,591評論 1 16
  • 轉(zhuǎn)載注明出處:點(diǎn)擊打開鏈接 Shader(著色器)是一段能夠針對3D對象進(jìn)行操作奈揍、并被GPU所執(zhí)行的程序。Shad...
    游戲開發(fā)小Y閱讀 3,364評論 0 4
  • Why Bothers赋续? 為什么已經(jīng)有ShaderForge這種可視化Shader編輯器男翰、為什么Asset Sto...
    DonaldW閱讀 76,126評論 16 183
  • 我在河澤之畔經(jīng)過你 一面之記 呵氣為飛花 落淚成珠玉 徒步遍生春草離離 也想起 高樓倚著密雨的你 安靜望著人群 將...
    蘇長亭閱讀 1,091評論 68 74
  • 2016年12月底肩杈,我先整理一個關(guān)于《2016年原創(chuàng)文章合集》涵亏,對2016年發(fā)布在公號里的文章進(jìn)行了一個系統(tǒng)的整理...
    曉多閱讀 817評論 9 9