unity ShaderLab 基础之【着色器中的参数】命令详解

着色器中的参数

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
发布了134 篇原创文章 · 获赞 37 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/lengyoumo/article/details/104231136