塗抹還是滿常見的效果。
要做塗抹,首先要存一張中間貼圖作為mask。
然後需要兩個shader,乙個做mask乙個做混合。
maskshader:
shader "blendshader:unlit/maskshader
" _maskdecaltex(
"mask decal texture
", 2d) = "
white"{}
_maskoffset(
"mask offset
", vector) = (0,0,0,0
) }
subshader
lod
100pass
;struct
v2f ;
sampler2d _maintex;
float4 _maintex_st;
float4 _maskoffset;
sampler2d _maskdecaltex;
fixed4 frag (v2f i) : sv_target
endcg}}
}
shader "指令碼(核心部分):unlit/blendshader
" _secondtex(
"second texture
", 2d) = "
white"{}
_masktex(
"mask texture
", 2d) = "
white"{}
}subshader
lod
100pass
;struct
v2f ;
sampler2d _maintex;
float4 _maintex_st;
sampler2d _secondtex;
sampler2d _masktex;
fixed4 frag (v2f i) : sv_target
endcg}}
}
viewportpoint -= new vector4(0.5f, 0.5f
);if (mpersistmasktex == null
)maskmat.settexture(
"_maintex
", mpersistmasktex);
maskmat.setvector(
"_maskoffset
", viewportpoint);
graphics.blit(mpersistmasktex, maskrt, maskmat);
blendmat.settexture(
"_maintex
", src);
blendmat.settexture(
"_secondtex
", temprt);
blendmat.settexture(
"_masktex
", maskrt);
graphics.blit(src, des, blendmat);
var cacheactive =rendertexture.active;
rendertexture.active =maskrt;
mpersistmasktex.readpixels(
new rect(0, 0, mpersistmasktex.width, mpersistmasktex.height), 0, 0
);rendertexture.active = cacheactive;
2018/11/18補充:近期實現了對塗抹畫素的判斷操作,塗抹到一定程度後則完成擦除:
實現乙個有趣的小效果
一 新建乙個project。二 新增兩個textview,並設定它的屬性。android id id tv one android layout width wrap content android layout height wrap content android text 瘋狂源自夢想,技術成...
乙個flash loading效果
在公司裡做動畫時候做的乙個loading的效果,可以參考但不要直接用,因為裡面有一些自己的mc不一定合適,而且這裡沒有給出具體的說明文字 shift f2開啟場景面板,在scene1前加乙個場景命名loading 在loading做兩個層,乙個action層,乙個層用來放置loading效果的mc ...
乙個flash loading效果
在公司裡做動畫時候做的乙個loading的效果,可以參考但不要直接用,因為裡面有一些自己的mc不一定合適,而且這裡沒有給出具體的說明文字 shift f2開啟場景面板,在scene1前加乙個場景命名loading 在loading做兩個層,乙個action層,乙個層用來放置loading效果的mc ...