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)
ColorRGBA颜色(1,1,1,.5)
2D2d贴图, 2d纹理,默认值可以为一个代表默认tint颜色的字符串,可以是空字符串或者”white”,”black”,”gray”,”bump”中的一个”white”{}
3D3d贴图
Cube6面立方贴图”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_MVUNITY_MATRIX_MV 的转置矩阵
UNITY_MATRIX_IT_MVUNITY_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 _ProjectionParamsx=1.0 或-1.0(使用反转的投影矩阵渲染时是负数),y=Near,z=Far,w= 1.0+1.0/Far, 其中near和far分别是近裁剪平面和远裁剪平面与摄像机的距离
float4 _ScreenParamsx=width,y=height,z=1.0+1.0/width,w=1.0+1.0/height, 其中width和height分别是该摄像机的渲染目标 (render target)的像素宽度和高度
float4 _ZBufferParamsx=1-Far/near,yFar/Near, 最x/Far,wy/Far,该变量用于线性化Z缓存中的深度值
floart4 unity_OrhoParamsx=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 _SinTimet是时间的正限制,4个分量分别是t/8,t/4,t/2,t
float4 _Costimet是时间的余弦值,t/8,t/4.t/2,t
float4 unity_DeltaTimedt是时间增量,4个值分别是dt,1/dt,smoothDt,1/smoothDt
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千年奇葩

从来没受过打赏,这玩意好吃吗?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值