【Unity Shader 中Properties 相关介绍】

shader在项目路径

Shader "Unlit/NewUnlitShader"
  • shader在项目里的路径位置,类似建文件夹一样。
  • 当在Material选择shader时,根据自己定义的路径选择相应的shader,"/"表示文件的下一层。

下面是shader Properties属性宏定义

    Properties 
    { 
    ...
	}
  • Properties {}属性宏定义,内的都是Shader的属性参数内容,是属性面板,会显示到的Inspector。

语法规则结构如下

        _Variable Name ("Inspector GUI Name", Type) = (Default Value)
  • _变量名 (“在Inspector面板显示的名称” 变量类型) = (变量的默认值)
  • _Variable Name : 变量名,Pass结构里会用到,会起到相关联作用。
  • Inspector GUI Name : 这个是在Inspector面板显示的名称,主要是方便使用和理解,像是对应的注解。
  • Type :变量的类型。一般定义了变量名后,变量的类型可选择的就不是很多了,可以在网上找找Unity Shader变量类型。
  • Default Value : 变量的默认值,不可省略哦。

下面是具体的语法规则

示例:
    Properties 
    { 
        _MainTex ("Texture", 2D) = "white" {}
        _2D("2D", 2D) = "" {}
        _Color("Color",Color) = (1,1,1,1)
        _Value("Value",Range(0,10)) = 2.5
        _Float("Float",Float) = 0
        _Vector("Vector",Vector) = (0,0,0,0)
        _Rect("Rect",Rect) = "" {}
        _Cube("Cube",Cube) = "" {}
	}

类型:2D纹理
        _MainTex ("Texture", 2D) = "white" {}
  • Cg/HLSL:sampler2D/sampler2D_half/sampler2D_float。
  • 默认值有white、black、gray、bump以及空,空就是white。

类型:颜色属性
        _Color("Color",Color) = (1,1,1,1)
  • (1,1,1,1) = 白色,也即默认变量值是白色。
  • Cg/HLSL:float4/half4/fixed4。

类型:Range属性
        _Value("Value",Range(0,10)) = 2.5 
  • 2.5这是常数,其中Range 是一个范围值,在Inspector面板显示的是一个滑动条,左小右大顺序。
  • 本身还是Float类型,只是通过Range(min,max)来控制滑动条的最小值与最大值

类型:整型
        _Int("Int", Int) = 1
  • Cg/HLSL:int
  • 取决于在Cg/HLSL中是用float还是int来声明的,如果定义为float则实际使用的就是浮点数,字义为int会被识别为int类型(去小数点直接取整)

类型:浮点数值
        _Float("Float",Float) = 0
  • 其中Float 是浮点数,可以输入数字的变量。

Cg/HLSL:可根据需要定义不同的浮点精度。
float 32位精度,常用于世界坐标位置以及UV坐标。
half 范围[-6W,6W],常用于本地坐标位置,方向等。
fixed 范围[-2,2],常用于纹理与颜色等低精度的情况。


类型:四维向量
		_Vector("Vector",Vector) = (0,0,0,0)
  • Vector是向量,(0,0,0,0)是个四维向量,在Inspector面板显示的是四个数字坑位。通常会跟相关联的变量做加减乘除数学运算,最终实现效果。
  • 在Properties中无法定义二维或者三维向量,只能定义四维向量

类型:立方体纹理
		_MainCube ("Texture", Cube) = "white" {}
  • Cg/HLSL:samplerCUBE/samplerCUBE_half/samplerCUBE_float

类型:3D纹理
		_MainTex3D ("Texture", 3D) = "white" {}
  • Cg/HLSL:sampler3D/sampler3D_half/sampler3D_float

小结
        _A("B",C) = (D)
  • 等于号的右侧的一目了然,上面介绍得很清楚。
  • 等于号的左侧(D),为什么有的地方是 “” {} 这种形式,有的是 (1,1,1,1) 这种形式,有的直接是 数字 这种形式?

举例

例如 : _2D _Rect _Cube 这三个变量的默认值是这"" {}形式。
其中 _2D 是图片, _Rect 是UV _Cube 是模型。
根据不同的变量名类型造成的,变量名不一样,含义会有所变化。
而这些图片、UV和模型都需要主存加载相应数据给显存的,渲染所需的数据从硬盘最终加载到显存。
渲染中需要加载到显存中的数据非常复杂,如果数据全部读取或者存留,
这样加载的计算量巨大且耗时,需要通过CPU设置渲染状态,"引导"GPU执行的命令。
也即CPU提供数据给GPU的部分,其中CPU添加命令 (应用阶段),GPU读取命令并且执行。
上面这些是渲染流水线的基础知识,具体的细节可以参考第一篇里的书籍。http://t.csdn.cn/Dm8Hs

    SubShader
        这一部分的内容留到下次介绍
        //
    {
        **************************************
        Pass
        {
            CGPROGRAM
            **************************************
            }
            ENDCG
        }
    }
}

在这里插入图片描述

显示在Inspector面板上的内容。供参考。

其中Inspector GUI Name的命名是可以根据自己喜欢取的,只要自己看得懂即可。

上面代码中 书籍的链接 提取码:M84J

下一篇

​SubShader在这一篇:【Unity Shader 中SubShader相关介绍】

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

暴走约伯

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值