赞
踩
目录:Unity Shader - 知识点目录(先占位,后续持续更新)
原文:Creating and Using Materials
版本:2019.1
创建与使用材质
创建一个新的材质,使用菜单 Assets->Create->material或是Project视图的右键菜单。
默认的,新的材质会指定Standard的Shader,所有贴图属性都会是空的,默认为纯白色图贴,如:
材质创建后,你可以应用于一个对象上,并可以调节Inspector上的属性。应用到一个对象上的方法,你可以拖拽Project视图的材质到Scene视图或是Hierarchy视图中的对象。
设置材质的属性
你可以选择Material上你想使用的Shader。在Inspector点击展开Shader下拉菜单,再选择你的Shader。当你更换Shader后,材质可用测参数属性也同时会变换成该Shader对应的暴露属性。属性可以是颜色,纹理,数值,或是向量。如果你将该Material应用在Scene(场景)的可见对象上,你将可以实时的通过调整Material的属性来看到效果。
两种方式来设置Material的Texture属性。
内置的Shader
除了Standard Shader,还有其他很多的分类的内置Shader来用于其他需求:
Shader着色器的技术细节
Shader着色器是一段脚本,该脚本包含数学或算法来计算一个模型表面的像素如何渲染而用的。Standard shader实现复杂和高逼真度的光效计算。其他的Shader也许简单或是不同的计算实现不用效果。指定Shader后,将会在Material材质中列出对应的一些属性。这些Material属性,在Inspector视图中属性可以是数值,颜色,或是纹理。接着材质将被一个GameObject对象中添加了Renderer(渲染器,可以是MeshRenderer,SkinnedMeshRenderer都是继承自Renderer)组件来渲染mesh(网格)。
通常一个纹理可用于多个不同的材质中。根据需求,材质也可能使用不同的Shader。
以下可能的一个例子,设置了三个materials两个shaders一个纹理的组合使用。
如图,有红色和蓝色的车辆。两个模型的车身分别使用不同的材质,“Red car material"和"Blue car material”。
两个车身都使用了相同的自定义shader,“Carbody Shader”。使用自定义着色器通常为汽车添加了额外的特性,比如金属闪光渲染,或者可能具有自定义损伤的特性。
每个车身材质都使用了"Car Texture"纹理,该纹理包含了车身的所有细节,而不需要指定其他的纹理颜色了。
车身使用的Shader都使用了一个叫tint color(色调)的属性,以设置不同颜色来达到红色和蓝色的车辆,而仅使用一个纹理就可以实现不同车辆的不同颜色效果了。
车轮模型使用了其他不一样的材质(不同于车身的材质),但该材质同时使用于两车轮,所以两车轮外观看起来是一样的。车轮材质使用Standard Shader,并同样使用了 “Car Texture” 纹理。
注意"Car Texture"纹理包含了车身和车轮的细节,这里叫:texture atlas(纹理图集),意味着模型不同的部位映射了纹理图中不同的部位。
虽然车身材质中使用的纹理包含了车轮的图像内容,但车轮的图像内容并不会显示在车身上,因为在车身几何体网格中,没有映射车轮的纹理内容。
同样,车轮不会显示车身的纹理内容,因为车轮几何体网格没有映射车身的纹理内容。
这个映射通常是由其他的3D软件来完成的,称之为"UV mapping"(UV映射)。
关于Shader(着色器)更多的定义:
材质定义:
自定义Shader意味着要编写图形程序。使用ShaderLab语言来完成会简单很多。然而,让Shader着色器在各种图形显卡上工作是一项复杂的任务,需要相当全面的图形卡工作原理知识。
有许多的Shader在Unity中已内置了,还有更多的来自Standard Assets资源库。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。