Shader Trick
[!NOTE] Title
Unity: UV 坐标原点为左下角
UE:UV 坐标原点为左上角
遮罩
1 UV 坐标系转换成笛卡尔直角坐标系
(0,1)-> (-1, 1)
1 | float4 frag(Varyings i) : SV_Target |
2 圆形遮罩
简单方法:
笛卡尔坐标系求据中心的距离, 用 length 或 distance 函数即可
方法一:
不能用 power 节点代替 multiply,因为 power 节点不支持负数运算,小于 0 的数都会被 clamp 到0。
方法二:
UE 材质中的 Sine 函数,取值范围是-1~1,周期为 1(不是 2pai)。
方形遮罩使用这两个节点相乘即可:
方法三:SphereMask
RadialGradientExponential(指数径向渐变)函数
UV(矢量 2)(UVs (Vector 2))
用于控制渐变所在的位置及其涵盖 0-1 空间的程度。
中心点(矢量 2)(CenterPosition (Vector2))
基于 0-1 的渐变中心位置偏移。
半径(标量)(Radius (Scalar))
源自中心的径向渐变的大小。默认值 0.5 使渐变边缘位于纹理空间边缘附近。
密度(标量)(Density (Scalar))
调整此函数所产生的渐变的硬度。这个数值越大,意味着渐变越清晰。
反转密度(布尔值)(Invert Density (Boolean))
对于渐变,将白色反转为黑色,并将黑色反转为白色。
DiamondGradient(钻石型渐变)
衰减(标量)(Falloff (Scalar))
通过控制渐变从白色变为黑色的速度,提高渐变对比度。
3 线性遮罩
扫线
1 | float flow=saturate(pow(1-abs(frac(i.positionWS.y*0.3-_Time.y*0.2)-0.5),10)*0.3); |
法线
多面显示
xyz 面分别显示对应图片,此时-x-y-z 面颜色值为-1黑色
六面显示
噪音算法
白噪音
方法一:floor
方法二:frac
动态噪音
使用了两种算法,区别仅在于输出值
RandomNoise float1
RandomNoise vector2
噪音
拟合曲线
可以使用一些软件,比如 GeoGebra 可以自己定义几个点,软件来生成对应的函数。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 游戏江湖!
评论
WalineLivere