本篇内容主要介绍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。同时创建一个空的材质球。

打开编辑器,就可以看到文件最给我们提供的原始代码。接下来就开始修改吧。

1Delete>_MainTex ("Base (RGB)", 2D) = "white" {}

21的代码行Add>_EmissiveColor("Emissive Color",Color) = (1,1,1,1)

当完成2操作的时候 切换回unity editor,你会发现着色器代码编译ok了。把他给我们的BasicMat。就可以看到我们添加的属性了。

 2 Finish

32的代码下行Add>_AmbientColor("Ambient Color",Color)=(1,1,1,1)

 3 Finish,又多了一个Color属性了。

43的代码下行 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