unity shaderlab常用函数及定义

您所在的位置:网站首页 unityshaderlab unity shaderlab常用函数及定义

unity shaderlab常用函数及定义

2023-04-24 02:06| 来源: 网络整理| 查看: 265

目录

一、CG和GLSL常用函数

1、CG语言中的变量修饰符

2、数学函数

 3、几何函数

3、纹理映射函数

 4、偏导函数

二、Unity常用的内置函数,变量

1、顶点着色器输入结构体

2、顶点着色器输出

3、空间变换函数及内置变量

3.1、空间变换函数

3.2、屏幕空间相关函数

3.3、内置变量矩阵

3.4、摄像机和屏幕参数

3.5、时间相关参数

3.6、光照相关参数

 三、着色器其他特殊语义

1、屏幕空间像素位置:VPOS

2、面对方向:VFACE

3、顶点 ID:SV_VertexID

一、CG和GLSL常用函数 1、CG语言中的变量修饰符 修饰符                                                                                解析 const 变量被定义成常量的话,在程序中,就不能再对该变量赋值,除非const和uniform,varying一起使用。const修饰的变量,需要在声明时给予一个初始值 extern extern表明声明仅仅是声明,而非定义。在程序中一定有一个地方存在一个非extern的对应的声明 in 只在声明参数,或是使用varying修饰符时使用。将参数,或是varying作为函数或是程序的输入值。函数参数如果没有in,out,或者inout的话,隐式的默认为in inline 只在函数定义时有用,告诉编译器始终对该函数采取内联调用 inout 只在声明为参数和varying时使用,将参数或是varying声明为函数或是程序的输入输出值 static 只在声明全局变量时使用,static将使变量对程序而言成为私有的,外部不可见,不能和uniform,varying一起使用 out 只在声明参数和varying时使用,将变量或varying定义为函数或是程序的输出值 uniform       用于全局变量和程序的入口函数的参数,用来定义constant buffers(常量缓存)。如果用于一个非入口函数的参数,它将被忽略。这样做的目的是为了使一个函数既能作为入口函数,又能作为非入口函数。uniform的变量可以像非uniform的变量那样读写。uniform修饰符通过向外部语言提供一个机制,来提供变量的初始值是如何指定和保存的信息。 2、数学函数 CG语言 GLSL语言 功能描述 ceil(x) ceil(x) 对输入参数向上取整。例如: ceil(float(1.3)) ,其返回值为2.0 floor(x) floor(x) 对输入参数向下取整。例如floor(float(1.3))返回的值为1.0;但是floor(float(-1.3))返回的值为-2.0。该函数与ceil(x)函数相对应。 fmod(x,y) mod(x, y) 返回x/y的余数。如果y为0,结果不可预料。 frac(x) fract(x) 返回标量或矢量的小数 frexp(x, out i) 将浮点数 x 分解为尾数和指数,即 x = m* 2^exp,返回 m,并将指数存入 exp 中;如果 x 为 0,则尾数和指数都返回 0 modf(x, out ip) 把x分解成整数和分数两部分,每部分都和x有着相同的符号,整数部分被保存在ip中,分数部分由函数返回 round(x) 返回四舍五入值。 exp(x) exp(x) 计算ex的值,e=2.71828182845904523536 exp2(x) exp2(x) exp2(x) log(x) log(x) 计算2x的值 log2(x) log2(x) 计算log2​(x)的值,x必须大于0 log10(x) 计算lg(x)的值,x必须大于0 max(a, b) max(a, b) 比较两个标量或等长向量元素,返回最大值 min(a,b) min(a,b) 比较两个标量或等长向量元素,返回最小值。 pow(x, y) pow(x, y) 计算xy的值 sqrt(x) sqrt(x) 求x的平方根,,x必须大于0 rsqrt(x) inversesqrt(x) x的平方根的倒数,x必须大于0 abs(x) abs(x) 返回输入参数的绝对值 ldexp(x, n) 计算x∗2n的值 mul(M, N) M*N 矩阵M和矩阵N的积 mul(M, v) M*v 矩阵M和列向量v的积 mul(v, M) v* M 行向量v和矩阵M的积 determinant(m) 计算矩阵的行列式因子。 transpose(M) 如果M是一个AxB矩阵,M的转置是一个BxA矩阵,它的第一列是M的第一行,第二列是M的第二行,第三列是M的第三行,等等 asin(x) asin(x) 反正弦函数,输入参数取值区间为,返回角度值范围为[−π/2,π/2] acos(x) acos(x) 反余切函数,输入参数范围为[-1,1], 返回[0,π]区间的角度值 atan(x) atan(x) 反正切函数,返回角度值范围为[−π/2,π/2] atan2(y,x) atan2(y,x) 计算y/x的反正切值。实际上和atan(x)函数功能完全一样,至少输入参数不同。atan(x) = atan2(x, float(1))。 sin(x) sin(x) 输入参数为弧度,计算正弦值,返回值范围 为[-1,1] cos(x) cos(x) 返回弧度x的余弦值。返回值范围为 tan(x) tan(x) 计算x正切值 sincos(float x, out s, out c) 该函数是同时计算x的sin值和cos值,其中s=sin(x),c=cos(x)。该函数用于“同时需要计算sin值和cos值的情况”,比分别运算要快很多! sinh(x) 计算x的双曲正弦 cosh(x) 双曲余弦(hyperbolic cosine)函数,计算x的双曲余弦值。 tanh(x) 计算x的双曲线切线 radians(x) radians(x) 函数将角度值转换为弧度值 degrees(x) degrees(x) 输入参数为弧度值(radians),函数将其转换为角度值(degrees) cross(A,B) cross(A,B) 返回两个三元向量的叉积(cross product)。注意,输入参数必须是三元向量! lit(NdotL, NdotH, m) 函数计算环境光、散射光、镜面光的贡献,返回的4元向量。 N表示法向量; L表示入射光向量; H表示半角向量; m表示高光系数。 X位表示环境光的贡献,总是1.0; Y位代表散射光的贡献,如果 N∙L


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3