欢迎光临散文网 会员登陆 & 注册

【庄懂技术美术】003

2023-04-09 09:39 作者:柴郡笔记  | 我要投稿

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大小,再将初始位置设为左上,接下来,位置乘以步长即可得出正确位置。

注:调整序列帧缩放会导致除第一列以外的序列帧播放错误


极坐标:

智商欠费,先记着,之后再学


【庄懂技术美术】003的评论 (共 条)

分享到微博请遵守国家法律