unity shaderlab常用函数及定义 |
您所在的位置:网站首页 › unityshaderlab › unity shaderlab常用函数及定义 |
目录 一、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 |