赞
踩
本篇介绍了在Unity中创建Shader的基本步骤,以及Shader的结构分析。
上篇连接(Shader基础篇)
物体要带有三角网格
- 创建游戏物体:在Hierarchy>右键>GameObject>3D Object>任意选择。
- 将材质附加到物体上有一下几种方式:
- 1、在Hierarchy中选中物体,在Project中拖动material到Inspector面板中。
- 2、在Project中拖动material到Scene中的物体上(如果找不到物体,在Hierarchy中选中,然后在Scene中移动鼠标(不要单击)后按“F”键)。
一个Unity Shader的基本结构如下所示:
` Shader "Unlit/MyShader" { Properties { //属性 _Name("Display Name",PropertyType)=DefaultValue } SubShader//子着色器 { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM .... ENDCG } } }`
Shader "Unlit/MyShader"{}
MyShader是创建时候自己起的名字。 Unlit是Inspector选择shader类型时候当前shader所在的文件夹(可以自行修改),如图:
Properties
{
//属性
_Name("Display Name",PropertyType)=DefaultValue
}
_Name: 属性名,在代码中使用该名获取该属性的内容。
Display Name:在外部Inspector上显示的名称(后面会附图)
PropertyType:属性的类型,如下表:
属性类型 | 例子 | 详解 |
---|---|---|
Color | _Color(“Color”,Color)=(1,1,1,1) | 颜色属性,由RGBA(红黄蓝透明)四个变量来定义 |
Vector | _Vector(“Vector”,Vector)=(2,3,5,1) | 四维向量(x,y,z,w) |
Cube | _Cube(“Cube”,Cube)=”while”{} | 立方体纹理,简单说就是6张有联系的2D贴图的组合 |
2D | _2D(“2D”,2D)=”“{} | 一张2的阶数大小(256,512之类)的贴图。 |
3D | _3D(“3D”,3D)=”black”{} | |
Int | _Int(“Int”,Int)=2 | 数字类型的属性,一个整数 |
Float | _Float(“Float”,Float)=1.5 | 数字类型的属性,一个浮点数 |
Range(min,mix) | _Range(“Range”,Range(0.0,5.0))=3.0 | 一个介于最小值和最大值之间的浮点数 |
DefaultValue定义了这个属性的默认值。Color:以0~1定义的rgba颜色。比如(1,1,1,1)。2D,3D,Cube:可以是空字符窜或者是”white”,”black”,”gray”,”bump”中的一个。
Tags标签,是一个键值对它的键和值都是字符串类型,Tags{“TagName”=”Valuel”“TagName2”=”Value2”}如下表:
标签类型 | 说明 | 例子 |
---|---|---|
Queue | 控制渲染顺序,指定该物体属于哪一个渲染队列 | Tags{“Queue”=”Transparent”} |
RanderType | 对着色器进行分类 | Tags=”RanderType=”Opaque” |
DisableBatching | 通过该标签来直接证明是否对该SubShader使用批量处理 | Tags=”DisableBatching”=”True” |
ForceNoShadowCasting | 控制使用该SubShader的物体是否会投影 | Tags=”ForceNoShadowCasting”=”True” |
IgnoreProjector | 通常用于半透明物体 | Tags=”IgnoreProjector”=”True” |
CanUseSpriteAtlas | 当该SubShader是用于Sprites时,将该标签设为“false” | Tags=”CanUseSpriteAtlas”=”True” |
PreviewType | 指明材质面板将如何预览该材质,默认情况下,材质将显示为一个球体。但我们可以自行设置 | Tags=”PreviewType”=”Plane” |
LOD: 这个数值决定了我们能用什么样的Shader
Pass:Cg的代码片段都写在里面。整体如下所示:
本篇为Unity Shader篇的最基础篇。主要讲述如何去创建Shader,如何创建材质球并附加Shader到材质,如何创建游戏对象并将材质附加到游戏对象。Shader的结构分析,会持续更新,欢迎一起学习。随时欢迎各位大佬前来指教,提出意见!!!☺☺☺
相关学习网站推荐
本作品由A_AiTing采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。