UnityShader常用函数和变量

UnityShader常用函数和变量

后续在应用的过程中,不断更新

数学函数

函数 介绍
smoothstep(min, max, x) 一种平滑插值的方法,对于创建柔和的边缘或过渡效果特别有用,smoothstep 函数的原理是通过一个三次多项式对输入值 x 在定义的两个边缘值 edge0 和 edge1 之间进行非线性插值,使得当 x 位于 edge0 和 edge1 之外时结果分别为 0 或 1,而当 x 在这两个边缘值之间时,则产生一个从 0 平滑过渡到 1 的值,此过程确保了输出在端点处的变化率为零,从而实现平滑的过渡效果。
max(a, b) 比较两个标量或等长向量元素,返回最大值。
min(a,b) 比较两个标量或等长向量元素,返回最小值。
pow(x, y) 计算x的y次方的值
mul(M, N) 矩阵M和矩阵N的积
mul(M, v) 矩阵M和列向量v的积
clip(x) 如果x的任何分量小于零,则丢弃当前像素。
clamp(x, start, end) 把值限制在起始值和结束值之间
mul(v, M) 行向量v和矩阵M的积
dot(A,B) 计算A,B的点积
cross(A,B) 计算A,B的叉积
saturate(x) 把x限制到[0,1]之间
abs(x) 返回输入参数的绝对值
lerp(a,b,w) 根据w返回a到b之间的插值 ,即: a + w*(b-a);
ceil(x) 对输入参数向上取整。
floor(x) 对输入参数向下取整。
round(x) 返回四舍五入值。

内置空间变换函数

函数 介绍
float4 UnityWorldToClipPos(float3 pos ) 把世界坐标空间中某一点pos变换到齐次裁剪空间
float4 UnityViewToClipPos(float3 pos ) 把观察坐标空间中某一点pos变换到齐次裁剪空间
float3 UnityObjectToViewPos(float3 pos或float4 pos) 模型局部空间坐标系中某一个点pos变换到观察空间坐标系
float3 UnityWorldToViewPos(float3 pos ) 把世界坐标系下的一个点pos变换到观察空间坐标系
float3 UnityObjectToWorldDir(float3 dir ) 把方向矢量从模型空间转换到世界空间(返回值已归一化)
float3 UnityWorldToObjectDir(float3 dir ) 把方向矢量从世界空间转换到模型空间(返回值已归一化)
float3 UnityObjectToWorldNormal(float3 norm ) 将法线从模型空间转换到世界空间(返回值已归一化)
float3 UnityWorldSpaceLightDir(float3 worldPos ) 输入参数worldPos是一个世界坐标系下的坐标,得到世界空间中从该点到光源(_WorldSpaceLightPos0)的光照方向。(返回值未归一化)
float3 WorldSpaceLightDir(float4 localPos ) 输入一个模型顶点坐标,得到世界空间中从该点到光源的光照方向。(返回值未归一化)
float3 ObjSpaceLightDir(float4 v ) 输入一个模型顶点坐标,得到模型空间中从该点到光源的光照方向。(返回值未归一化)
float3 UnityWorldSpaceViewDir(float3 worldPos ) 输入参数worldPos是一个世界坐标系下的坐标,得到世界空间中从该点到摄像机的观察方向。(返回值未归一化)
float3 WorldSpaceViewDir(float4 localPos ) 输入一个模型顶点坐标,得到世界空间中从该点到摄像机的观察方向。(返回值未归一化)
float3 ObjSpaceViewDir(float4 v ) 输入一个模型顶点坐标,得到模型空间中从该点到摄像机的观察方向。(返回值未归一化)

内置摄像机和屏幕相关变量

函数 类型 介绍
_WorldSpaceCameraPos float3 摄像机的世界空间位置。
unity_CameraProjection float4x4 摄像机的投影矩阵。
unity_CameraInvProjection float4x4 摄像机投影矩阵的逆矩阵。
unity_OrthoParams float4 x 是正交摄像机的宽度,y 是正交摄像机的高度,z 未使用,w 在摄像机为正交模式时是 1.0,而在摄像机为透视模式时是 0.0。

内置时间相关变量

函数 类型 介绍
_Time float4 自关卡加载以来的时间 (t/20, t, t2, t3),用于将着色器中的内容动画化。
_SinTime float4 时间正弦:(t/8, t/4, t/2, t)。
_CosTime float4 时间余弦:(t/8, t/4, t/2, t)。
unity_DeltaTime float4 增量时间:(dt, 1/dt, smoothDt, 1/smoothDt)。

内置变换矩阵

函数 类型 介绍
UNITY_MATRIX_MVP float4x4 当前模型 * 视图 * 投影矩阵。
UNITY_MATRIX_MV float4x4 当前模型 * 视图矩阵。
UNITY_MATRIX_V float4x4 当前视图矩阵。
UNITY_MATRIX_P float4x4 当前投影矩阵。
UNITY_MATRIX_VP float4x4 当前视图 * 投影矩阵。
unity_ObjectToWorld float4x4 当前模型矩阵。
unity_WorldToObject float4x4 当前世界矩阵的逆矩阵。

引用
https://docs.unity.cn/cn/2021.1/Manual/Shaders.html
https://blog.csdn.net/u012722551/article/details/103926660
https://zhuanlan.zhihu.com/p/521907457

你可能感兴趣的:(unity,图形渲染)