【莊懂技術(shù)美術(shù)】003
AlphaCutout:
用于復(fù)雜輪廓,邊緣明確的物體??ㄍㄐЧ谋憩F(xiàn)。
優(yōu)點(diǎn):沒有排序問題? 缺點(diǎn):移動端性能較差
寫法:
聲明一個0到1.01的透切閾值。
在Tag中添加如下標(biāo)簽:
"RenderType"="TransparentCutout" ? ?//對應(yīng)改為Cutout
"ForceNoShaderCasting"="True" ? ? ? //關(guān)閉陰影投射
"IgnoreProjector"="True" ? ? ? ? ? ?//不響應(yīng)投射器
最后在片元著色器中添加:
clip(“透明度” - 透切閾值);
此方法的作用為判斷透明度是否為負(fù),是則舍棄該片元。
Transparent:
在Tag中添加如下標(biāo)簽:
Tags {
? ? ? ? ? ? "Queue" = "Transparent" ? ? ? ? ? ? //修改渲染順序
? ? ? ? ? ? "RenderType"="Transparent" ? ? ? ? ?//對應(yīng)改為Transparent
? ? ? ? ? ? "ForceNoShaderCasting"="True" ? ? ? //關(guān)閉陰影投射
? ? ? ? ? ? "IgnoreProjector"="True" ? ? ? ? ? ?//不響應(yīng)投射器
? ? ? ? }
在Pass通道添加:
?Blend SrcAlpha OneMinusSrcAlpha
然后混合透明度即可



屏幕空間貼圖:


重點(diǎn):
float3 posVS = UnityObjectToViewPos(v.vertex).xyz;??//屏幕空間頂點(diǎn)坐標(biāo)
float originDist = UnityObjectToViewPos(float3(0,0,0)).z;??//模型原點(diǎn)位置
o.ScreenUV = posVS.xy / posVS.z;??//空間畸變校正
o.screenUV *= originDist;??//按原點(diǎn)距離縮放

背景擾動:

重點(diǎn)為GrabPass{},用來獲取背景貼圖,然后再用噪波擾動。
可以用菲涅爾調(diào)整擾動噪波的值。

ComputeGrabScreenPos(裁剪空間頂點(diǎn)坐標(biāo))//背景紋理采樣uv
tex2Dproj(貼圖,uv)//背景紋理uv同步貼圖

序列幀:
floor():舍去括號內(nèi)除法的余數(shù)
設(shè)?_Value.x?和?_Value.y?為行和列,z為時間倍率,w為序列。

idV為縱軸位置,idU為橫軸位置,stepU和stepV為步長。將uv大小設(shè)置為step大小,再將初始位置設(shè)為左上,接下來,位置乘以步長即可得出正確位置。
注:調(diào)整序列幀縮放會導(dǎo)致除第一列以外的序列幀播放錯誤
極坐標(biāo):
