【庄懂技术美术】003
AlphaCutout:
用于复杂轮廓,边缘明确的物体。卡通效果的表现。
优点:没有排序问题 缺点:移动端性能较差
写法:
声明一个0到1.01的透切阈值。
在Tag中添加如下标签:
"RenderType"="TransparentCutout" //对应改为Cutout
"ForceNoShaderCasting"="True" //关闭阴影投射
"IgnoreProjector"="True" //不响应投射器
最后在片元着色器中添加:
clip(“透明度” - 透切阈值);
此方法的作用为判断透明度是否为负,是则舍弃该片元。
Transparent:
在Tag中添加如下标签:
Tags {
"Queue" = "Transparent" //修改渲染顺序
"RenderType"="Transparent" //对应改为Transparent
"ForceNoShaderCasting"="True" //关闭阴影投射
"IgnoreProjector"="True" //不响应投射器
}
在Pass通道添加:
Blend SrcAlpha OneMinusSrcAlpha
然后混合透明度即可



屏幕空间贴图:


重点:
float3 posVS = UnityObjectToViewPos(v.vertex).xyz; //屏幕空间顶点坐标
float originDist = UnityObjectToViewPos(float3(0,0,0)).z; //模型原点位置
o.ScreenUV = posVS.xy / posVS.z; //空间畸变校正
o.screenUV *= originDist; //按原点距离缩放

背景扰动:

重点为GrabPass{},用来获取背景贴图,然后再用噪波扰动。
可以用菲涅尔调整扰动噪波的值。

ComputeGrabScreenPos(裁剪空间顶点坐标)//背景纹理采样uv
tex2Dproj(贴图,uv)//背景纹理uv同步贴图

序列帧:
floor():舍去括号内除法的余数
设 _Value.x 和 _Value.y 为行和列,z为时间倍率,w为序列。

idV为纵轴位置,idU为横轴位置,stepU和stepV为步长。将uv大小设置为step大小,再将初始位置设为左上,接下来,位置乘以步长即可得出正确位置。
注:调整序列帧缩放会导致除第一列以外的序列帧播放错误
极坐标:
