本篇内容主要介绍Unity
ShaderLab 语法:Properties
Unity中的整个场景效果的表现,Shader起了至关重要的作用,为了方便我们的学习,unity采用了cg作为着色器语言。
Unity配备了强大的阴影和材料的语言工具称为ShaderLab,以程式语言来看,它类似于CgFX和Direct3D的语法,
它不只纪录基本的端点或者映像点(vertex/pixel),也描述了材质所必要的一切资讯。
理解一门足以,cg让学习shader的编写更快捷高效,表面着色器的语言大多基于组件得方式写入着色器。
为了了解unity内置的强大cg功能,可以参考unity editor目录下的文件:D:\Program Files (x86)\Unity46\Editor\Data\CGIncludes:
首先,我们在Unity Editor中直接Create\Shader。同时创建一个空的材质球。
打开编辑器,就可以看到文件最给我们提供的原始代码。接下来就开始修改吧。
1:Delete>_MainTex ("Base (RGB)", 2D) = "white" {}
2:1的代码行Add>_EmissiveColor("Emissive Color",Color) = (1,1,1,1)
当完成2操作的时候 切换回unity editor,你会发现着色器代码编译ok了。把他给我们的BasicMat。就可以看到我们添加的属性了。
2 Finish
3:2的代码下行Add>_AmbientColor("Ambient Color",Color)=(1,1,1,1)
3 Finish,又多了一个Color属性了。
4:3的代码下行 Add>_MySliderValue("Slider Value",Range(0,10))=1.3
4 Finish。
通过类似上面的属性,我们可以创建一个个可视化面板来调整着色器。避免直接修改代码。
定义的Properties中的属性,可以通过UI直接绑定属性在脚本中的值。
其他属性在Unity手册中有说明。至此你也会编写Properties。
着色器内部的每个属性都被名称 (name) 引用(Unity 中,着色器属性名称以下划线开头是很常见的)。在材质检视器中属性会显示为显示名称 (display name)。对每个属性来说,默认值放在等号之后:
对于范围 (Range) 和 浮点 (Float) 属性,默认值只是一个数字。
对于颜色 (Color) 和向量 (Vector) 属性来说,默认值为圆括号中的四个数字。
对纹理(二维 (2D)、矩形 (Rect)、立方体 (Cube))来说,默认值可以是一个空字符串或者是以下内置默认纹理中的一种:"白色”、“黑色”、“灰色”或“凹凸贴图”。
随后在着色器中,通过使用方括号内的属性名称访问属性值:[name].
详细ShaderLab Properties帮助页面参见游戏蛮牛api:
http://www.unitymanual.com/m/Components/SL-Properties.html
鄙视下:
http://edu.china.unity3d.com/learning_document,不登陆不给看api。