着色器中的参数
Properties
属性的结构:_CG变量名 (“unity可见的变量名”, 属性类型) = 值
例:_Color (“My Color”, Color) = (1, 1, 1, .5)
属性类型表
类型 | 说明 | 实例 |
---|---|---|
Int | 整型 | (.1, 2) |
Float | 浮点数 | .5 |
Vector | 四维向量 | (.5, 1 , 1, 0.5) |
Range | 范围1-2.3的浮点数 | (1, 2.3) |
Color | RGBA颜色 | (1,1,1,.5) |
2D | 2d贴图, 2d纹理,默认值可以为一个代表默认tint颜色的字符串,可以是空字符串或者”white”,”black”,”gray”,”bump”中的一个 | ”white”{} |
3D | 3d贴图 | |
Cube | 6面立方贴图 | ”white”{} |
Rect | 矩形贴图 | ”white”{} |
从应用阶段传递模型数据给顶点着色器时 常用的语义
命令 | 实例 | 说明 |
---|---|---|
POSITION | 模型空间中的顶点位置,一般是float4类型 | |
NORMAL | 顶点法线,float3类型 | |
TANGENT | 顶点切线 float4 | |
TEXCOORD0~N | 该顶点纹理坐标,0是第一组,一般是flkoat2 或float4类型 | |
COLOR | 定点颜色,通常是fixed4或float4类型 |
从顶点着色器传递给片元着色器时 常用的语义
命令 | 实例 | 说明 |
---|---|---|
SV_POSITION | 裁剪空间中的顶点坐标,结构体中必须包含一个用该语义修饰的变量 | |
COLOR0 | 用于输出第一组顶点颜色 | |
COLOR1 | 通常用于输出第二组顶点颜色 | |
TEXCOORD0~TEXCOORD7 | 通常用于输出纹理坐标 |
片元着色器输出给unity时常用的语义
命令 | 实例 | 说明 |
---|---|---|
SV_Target | 输出值将会存到渲染目标(render target)中 |
unity 内置的矩阵变换
命令 | 实例 | 说明 |
---|---|---|
UNITY_MATRIX_MVP | 当前的模型观察投影矩阵,用于将顶点/方向矢量从模型空间变换到裁剪空间 | |
UNITY_MATRIX_MV | 当前的模型观察矩阵,用于将顶点/方向矢量从模型空间变换到观察空间 | |
UNITY_MATRIX_V | 当前的观察矩阵,用于将顶点/方向矢量从世界空间变换到观察空间 | |
UNITY_MATRIX_P | 当前的投影矩阵,用于将顶点/方向矢量从观察空间变换到裁剪空间 | |
UNITY_MATRIX_VP | 当前的观察投影矩阵,用于将顶点/方向矢量从世界空间变换到裁剪空间 | |
UNITY_MATRIX_T_MV | UNITY_MATRIX_MV 的转置矩阵 | |
UNITY_MATRIX_IT_MV | UNITY_MATRIX_MV的逆转置矩阵,用于将法线从模型空间变换到观察空间,也可以用于得到UNITY_MATRIX_MV的逆矩阵 | |
_Object2World | 当前的模型矩阵,用于将顶点/方向矢量从模型空间变换到世界空间 | |
_World2Object | _Object2World的逆转矩阵,用于将顶点/方向矢量从世界空间变换到模型空间 |
unity 顶点转换函数
命令 | 说明 | 实例 |
---|---|---|
float4 UnityObjectToClipPos(float3 pos) | 将一个点从object空间转换成相机在均匀坐标下的剪辑空间。这就相当于 mul(UNITY_MATRIX_MVP, float4(pos, 1.0)), 应该在它的位置上使用。 | |
float3 UnityObjectToViewPos(float3 pos) | 将一个点从object空间转换为view空间。这就相当于mul(UNITY_MATRIX_MV, float4(pos, 1.0)).xyz, 应该在它的位置上使用。 |
辅助函数
命令 | 说明 | 实例 |
---|
unity 内置的摄像机和屏幕参数
命令 | 实例 | 说明 |
---|---|---|
float3 _WorldSpaceCameraPos | 该摄像机在世界空间中的位置 | |
float4 _ProjectionParams | x=1.0 或-1.0(使用反转的投影矩阵渲染时是负数),y=Near,z=Far,w= 1.0+1.0/Far, 其中near和far分别是近裁剪平面和远裁剪平面与摄像机的距离 | |
float4 _ScreenParams | x=width,y=height,z=1.0+1.0/width,w=1.0+1.0/height, 其中width和height分别是该摄像机的渲染目标 (render target)的像素宽度和高度 | |
float4 _ZBufferParams | x=1-Far/near,yFar/Near, 最x/Far,wy/Far,该变量用于线性化Z缓存中的深度值 | |
floart4 unity_OrhoParams | x=width,y=height,z无意义,w=1.0(该相机是正交相机)或w=0.0(透视相机),其中width和height是正交投影相机的宽和高 | |
float4x4 unity_CameraProjection | 该摄像机的投影矩阵 | |
floart4x4 unity_CameraInvProjection | 该摄像机的投影矩阵的逆矩阵 | |
float4 unity_CameraWorldClipPlanes | 该摄像机的6个裁剪屏幕在世界空间下的等式,按左右上下近远的顺序裁剪平面 |
时间变量
命令 | 实例 | 说明 |
---|---|---|
float4 _Time | _Time.x;_Time.y; _Time.z; _Time.w; | t是自该场景加载开始所经过的时间,4个分量分别是t/20,t,2t,3t |
float4 _SinTime | t是时间的正限制,4个分量分别是t/8,t/4,t/2,t | |
float4 _Costime | t是时间的余弦值,t/8,t/4.t/2,t | |
float4 unity_DeltaTime | dt是时间增量,4个值分别是dt,1/dt,smoothDt,1/smoothDt |