Unity Shader - 函数整理

倖福魔咒の 提交于 2020-02-28 00:56:43
  • ​​​​​CG 标准函数


基本函数 功能描述
abs(x) 返回 x 绝对值
max(a, b) 返回 ab 的较大值。
min(a,b) 返回 ab 的较小值。
round(x) 返回 x 的四舍五入值。
ceil(x) 向上取整。例如:ceil(float(1.3)) = 2.0;
floor(x) 向下取整。例如:floor(float(1.3)) = 1.0;
clamp(x,min,max) 返回 x 限制在 [min, max] 范围内的值。
lerp(a, b, f) 返回在 [a, b] 范围内权值为 f 的插值。(权值为 0 - 1)
smoothstep(a, b, x) 返回在 [a, b] 范围内插值为 x 的权值。(权值为 0 - 1)
saturate(x) 返回x 限制在 [0, 1] 范围内的值。
sign(x) 返回输入值的正负。正值返回 1 ;负值返回 0
step(a, x) 如果 x < a ,返回 ,否则,返回 1 。
fmod(x, y) 返回 x / y 的浮点余数。(y != 0
frac(x) 返回 x 的浮点部分;
isfinite(x) 判断 x 是否为有限值。是则返回 true;否则返回 false;
isinf(x) 判断 x 是否为无限值。是则返回 true;否则返回 false;
isnan(x) 判断 x 是否为非数据。是则返回 true;否则 返回false;(非数据:not-a-number NaN)
modf(x, out ip) 把输入值分解为整数和小数部分。整数部分 ip;小数部分 返回
   
幂指函数 功能描述
sqrt(x) 返回 

的值,(x >= 0
rsqrt(x) 返回 

的倒数值,(x >= 0
pow(x, y) 返回 

 的值。
exp(x) 返回 

的倒数值,e=2.71828182845904523536
exp2(x) 返回 

的倒数值
log(x) 返回 

 的值。(x > 0)
log2(x) 返回 

 的值。(x > 0)
log10(x) 返回 

 的值。(x > 0)
   
三角函数 功能描述
radians(x) 参数为角度,返回弧度
degrees(x) 参数为弧度,返回角度
sincos(x, out s, out c) 参数为弧度,返回 x 的正弦值、余弦值。
sin(x) 参数为弧度,返回 x 的正弦值。
cos(x) 参数为弧度,返回 x 的余弦值。
tan(x) 参数为弧度,返回x 的正切值。
asin(x) 参数为弧度,返回 x 的反正弦值。
acos(x) 参数为弧度,返回x 的反余弦值。
atan(x) 参数为弧度,返回 x 的反正切值。
atan2(y,x) 参数为弧度,返回 y / x 的反正切值。
sinh(x) 参数为弧度,返回 x 的双曲正弦值。
cosh(x) 参数为弧度,返回 x 的双曲余弦值。
tanh(x) 参数为弧度,返回 x 的双曲切线值。
   
矩阵函数 功能描述
determinant(M) 返回 矩阵M 的行列式。
mul(M, N) 返回 矩阵和 矩阵的积。
mul(M, v) 返回 矩阵和 列向量的积。
mul(v, M) 返回 行向量和 矩阵的积。
transpose(M) 返回 矩阵的转置矩阵。
cross(A,B) 返回 三维向量 AB 的叉积。
dot(A,B) 返回 三维向量 AB 的点积。
   
光照函数 功能描述

lit(n • l, n • h, m)

返回光照向量(环境光,漫反射光,镜面高光,1)。法向量 N;入射光向量 I;半角向量 H;高光系数 M。 

   
几何函数 功能描述
distance(x, y) 返回距离。x 点;y 点;
length(v) 返回模长。v 向量;
normalize(v) 返回单位向量。v 向量;
reflect(i, n) 返回反射向量。I 入射光向量;N 表面法向量;(仅对三元向量有效)
refract(i, n, eta) 返回折射向量。I 入射光向量;N 表面法向量;eta 折射相对系数;(只对三元向量有效)
   
纹理映射函数 功能描述

tex1D(sampler1D tex, float s)

一维纹理查询。
tex1D(sampler1D tex, float s, float dsdx, float dsdy) 使用导数值(derivatives)查询一维纹理。
Tex1D(sampler1D tex, float2 sz) 一维纹理查询,并进行深度值比较。
Tex1D(sampler1D tex, float2 sz, float dsdx,float dsdy) 使用导数值(derivatives)查询一维纹理, 并进行深度值比较。
Tex1Dproj(sampler1D tex, float2 sq) 一维投影纹理查询。
Tex1Dproj(sampler1D tex, float3 szq) 一维投影纹理查询,并比较深度值。
Tex2D(sampler2D tex, float2 s) 二维纹理查询。
Tex2D(sampler2D tex, float2 s, float2 dsdx, float2 dsdy) 使用导数值(derivatives)查询二维纹理。
Tex2D(sampler2D tex, float3 sz) 二维纹理查询,并进行深度值比较。
Tex2D(sampler2D tex, float3 sz, float2 dsdx,float2 dsdy) 使用导数值(derivatives)查询二维纹理,并进行深度值比较。
Tex2Dproj(sampler2D tex, float3 sq) 二维投影纹理查询。
Tex2Dproj(sampler2D tex, float4 szq) 二维投影纹理查询,并进行深度值比较。
Tex3D(sampler3D tex, float s) 三维纹理查询。
Tex3D(sampler3D tex, float3 s, float3 dsdx, float3 dsdy) 结合导数值(derivatives)查询三维纹理。
Tex3Dproj(sampler3D tex, float4 szq) 查询三维投影纹理,并进行深度值比较。
texCUBE(samplerCUBE tex, float3 s) 查询立方体纹理。
texCUBE (samplerCUBE tex, float3 s, float3 dsdx, float3 dsdy) 结合导数值(derivatives)查询立方体纹理。
texCUBEproj (samplerCUBE tex, float4 sq) 查询投影立方体纹理。
   
偏导函数 功能描述
ddx(x) 返回 x 关于屏幕坐标x轴的偏导数。
ddy(x) 返回 x 关于屏幕坐标y轴的偏导数。
   
调试函数 功能描述
void debug(float4 x) 如果在编译时设置了DEBUG,片段着色程序中调用该函数可以将值 x 作为COLOR语义的最终输出;

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!