Unity_shader(属性详解,顶点片元函数的使用)

Unity_shader

属性详解

属性于Properties中的定义格式
  • 格式
    命名(“Inspector面板显示的名字”,类型) = 默认值
    (注意,这里最后不加分号)
属性于Pass中的定义格式
  • 格式:
    类型 其在Properties中的命名;
    (注意,这里最后要加分号,并且类型与在Properties中的不同)
属性类型
  • Color:颜色类型。
    默认值格式:(a,b,c,d)该属性有四个参数 r,g,b,a,取值范围都是0到1。
    在Pass中的类型:float4
  • Vector:向量类型,有二维三维四维三种,默认情况下为四维向量。
    默认值格式:(a,b,c,d)该属性有四个参数,即分别表示其四维参数。
    在Pass中的类型:float4
  • Int:整数类型,与其他语言中int一样。
    默认值格式:单一的一个整数
    在Pass中的类型:float
  • float:小数类型,与其他语言不同的是,这里的小数类型只有float一种,没有double这种。
    默认值格式:单一的一个小数
    在Pass中的类型:float
  • Range:定范围数,其定义时限定一个范围,可以使其值永远保持在这个范围内。
    定义格式:命名(“Inspector面板显示的名字”,Range(范围限定1,范围限定2)) = 默认值。
    默认值格式:单一的一个数。
    在Pass中的类型:float
  • 2D:图片类型(2D纹理)。
    默认值格式:“默认颜色值”{}.
    在Pass中的类型:sampler2D
  • Cube:立方体纹理
    默认值格式:“默认颜色值”{}.
    在Pass中的类型:samplerCube
  • 3D:3D纹理
    默认值格式:“默认颜色值”{}.
    在Pass中的类型:sampler3D
float和half和fixed

这三个属性可以相互替换这使用,有float4就同样也有half4与fixed4,不同的是它们占用的空间不同,所能表示的范围也不同

  • float: 二进制32位存储
  • half: 二进制16位存储,大致范围为-6w~+6w
  • fixed: 二进制11位存储,大致范围为-2~+2

顶点片元函数的使用

顶点函数
  • 作用:基础作用是将模型的各个三角片顶点的局部坐标转化为剪裁坐标,即以其原来计算的以自身中心为坐标原点的坐标作为基础,去计算其应该在游戏中的什么位置。在这个作用基础上可以再自行附加作用。
  • 声明格式:#pragma vertex 函数命名
    (注意这里最后不加分号)
  • 定义格式:与c语言定义格式相仿(参数与返回值涉及语义绑定的知识点下面说)
    返回值类型 声明过的函数命名(参数){函数体}
片元函数
  • 作用:基础作用是对模型对应显示在屏幕上的每一个像素点进行处理,返回颜色显示。
  • 声明格式:#pragma fragment 函数命名
    (注意这里最后不加分号)
  • 定义格式:与c语言定义格式相仿(参数与返回值涉及语义绑定的知识点下面说)
    返回值类型 声明过的函数命名(参数){函数体}
矩阵转换
  • mul:矩阵转换通常使用矩阵相乘的方式进行转换,这里用到mul函数,写入俩个相同类型参数,让其第一个参数与第二个参数相乘,有些矩阵左乘特殊的矩阵可以达到一定的转换效果。比如左乘UNITY_MATRIX_MVP矩阵可以达到局部坐标转剪裁坐标的效果。
语义绑定
  • 说明:由于顶点函数,片元函数这些函数都是系统调用的函数,所以在参数上,无论是实参传入还是返回参数都是要与系统互动的,所以这里肯定不能乱写类型,并且要通过一种特定的手法去告诉系统,这个参数是干嘛的,或者说我这里需要你给我一个什么样的参数,这个手法就叫语义绑定。
  • 格式:在定义函数的时候,我们要对返回值和形参均进行语义绑定。格式如下
    返回值类型 声明过的函数命名(参数:绑定语义1):绑定语义2 {函数体}
    在参数后面加一个冒号所绑定的语义1是让系统传递语义1所代表的数据给这个参数作为其实参,在函数体前面加的冒号所绑定的语义2是告诉系统这个函数返回的参数是什么。
  • 语义绑定部分关键词
    POSITION:系统传过来的顶点的局部坐标。
    SV_POSITION:顶点传出去的顶点的剪裁坐标。
    SV_Target:片元函数传出去的各个像素点的色彩情况。
  • 拿顶点函数举个例子
#pragma vertex vert
float4 vert(float4 v : POSITION):SV_POSITION{
return mul(UNITY_MATRIX_MVP,v);
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值