Shader之溶解效果的幾種實現方法

2022-08-11 18:42:08 字數 2102 閱讀 5498

這裡通過 「是否丟棄畫素」的2種方法,寫2個shader,效果是一樣的,也提到了,丟棄某個畫素的3種方式。

是否丟棄:

1.通過指令碼控制shader變數判斷當前是否丟棄畫素,需要額外指令碼;

2.shader根據當前時間控制是否丟棄某個畫素,不需要額外指令碼。

丟棄方法:

1.通過clip函式進行丟棄畫素;

2.通過discard丟棄畫素;

3.通過設定alpha變數為0丟棄畫素。

1)dissolveone.shader通過指令碼控制

shader "

unlit/dissolveone

" _dissolvetex(

"texture

", 2d) = "

white"{}

_disssize(

"disssize

", range(0, 1)) = 0.1

//溶解閾值,小於閾值才屬於溶解帶

_disscolor("

disscolor

", color) = (1,0,0,1)//

溶解帶的漸變顏色,與_addcolor配合形成漸變色

_addcolor("

addcolor

", color) = (1,1,0,1

) _value(

"value

", range(0,1)) = 0.5

//這個屬性其實不用開放出來的,通過指令碼控制就好,但我想看效果卻懶得寫指令碼,就這樣吧

} subshader

lod

100pass

;struct

v2f ;

sampler2d _maintex;

sampler2d _dissolvetex;

float4 _maintex_st;

half _value;

//指令碼控制的變數

half _disssize;

half4 _disscolor, _addcolor;

fixed4 frag (v2f i) : sv_target

return

col;

}endcg}}

}

2)dissolvetwo.shader根據當前時間控制是否丟棄某個畫素

shader "

unlit/dissolvetwo

" _dissolvetex(

"texture

", 2d) = "

white"{}

_disssize(

"disssize

", range(0, 1)) = 0.1

//溶解閾值,小於閾值才屬於溶解帶

_disscolor("

disscolor

", color) = (1,0,0,1)//

溶解帶的漸變顏色,與_addcolor配合形成漸變色

_addcolor("

addcolor

", color) = (1,1,0,1

) _dissspeed(

"dissspeed

", float) = 1

} subshader

lod

100pass

;struct

v2f ;

sampler2d _maintex;

sampler2d _dissolvetex;

float4 _maintex_st;

half _disssize;

half4 _disscolor, _addcolor;

half _dissspeed;

fixed4 frag (v2f i) : sv_target

if (delta >= 0 && delta <_disssize>

return

col;

}endcg}}

}

兩者溶解效果是一樣的:

Shader簡單例子之溶解

shader custom s2 cankaotex 單通道的圖 2d white 這張圖呢 試驗的話 隨便找個 只有r通道 的即可.當然可可以只有b,也可以不僅僅有r通道,只是去這張圖的r值進行是否溶解的乙個判斷標準 寫漢字只是為了更好理解.rongjietime 完全溶解所需時間 second ...

使用Shader製作炫酷的死亡溶解效果

前段時間在開發rpg遊戲時用到了shader怪物死亡溶解特效,所以在這裡介紹下用法 效果圖 貼圖設定 diffuse ambient光照計算 fixed3 worldnormal normalize i.worldnormal fixed3 worldlightdir normalize world...

Loading效果之四Shader

思路 1 提高畫方型函式,並支援可自轉功能 2 以fixed2 0.5,0.5 為圓點,在圓點 正右 右上 正上 左上 正左 左下 正下 右下9個方位畫上方型 3 圓點方型做縮放動畫,其餘方型做自轉以及直線來回運動,如下 shader hidden loading subshader struct ...