Unity学习——纹理、材质&着色器
2021-06-14 08:06
标签:观察 tis tps rbo 下拉菜单 数值 详细 定义 mamicode Unity渲染使用的是材质(Materials)、着色器(Shaders)和纹理(Textures),它们有着紧密的联系。 正常来说,一个物体的网格几何只是一个大致形状,而大多数细节都是由问题提供的。纹理就是应用在网格表面的标准 bitmap图像。你可以认为一张纹理图像就像是被印在一张橡胶纸上,然后在适当的位置被拉伸和固定在网格上。纹理的定位是由 3D建模软件完成的。 使用 Materials能将纹理应用于物体。Materials使用专门的图形程序 Shaders来在网格表面渲染纹理。Shaders能实现灯光和着色效果,以模拟闪亮或凹凸不平的表面。它们可以同时利用两个或多个纹理, 游戏的图形用户接口(graphic user interface, GUI)由不直接用于游戏场景的图形构成,但是这些图形能让用户做出选择并看到信息。比如说,分数显示和选项菜单是游戏GUI的典型例子。这些图形与用于详细描述网格表面的图形不同,但是它们仍然是由标准的Unity纹理处理。 网格是理想的,用于表示固态物体的;但是对于火焰,烟雾和魔法特效来说就不那么合适了。这类效果最好是由粒子系统来处理。一个粒子就是一个小型2D图形,代表流体或气体的一小部分。当许多这样的粒子被创建并开始运动时,它们就能随意地产生出完美的特效。比如说,你可以通过从一个中心点高速发射火焰纹理粒子来表演爆炸效果。也能通过从场景中的一条高线由上向下加速水粒子来模拟瀑布。 Assets ->Create->Material可以创建材质。新材质默认被分配给标准着色器,且所有 map属性都为空: 一旦材质被创建后,就可以将其应用于物体并在 Inspector中调整它的所有属性。将创建好的材质拖动到Project视图里的物体就可以将它们绑定起来了。 你可以选择任何你需要的具有特殊材质的着色器。从 Inspector中的 Shader的下拉菜单那选择一个新 Shader就可以了。选择的 Shader会相应地改变属性。将材质应用给场景中的物体,你将能够实时地看到物体属性也在变化。 除了标准着色器外,还有许多内置着色器用于特定用途: 着色器实际上就是一个包含数学计算和算法的脚本,用于显示模型表面的像素。标准着色器执行复杂和真实的照明计算。其他着色器可能使用更简单的或不同的计算来显示不同的结果。任何给定的着色器中都有许多属性,这些属性的值由使用该着色器的材质给出。通过与 GamObjects关联的渲染组件使用材质,可以渲染每个 GameObject的网格。 在这个图像中有红车和蓝车。每个模型的bodywork使用各自的材质 "Red car material" 和 "Blue car material"。 Unity学习——纹理、材质&着色器 标签:观察 tis tps rbo 下拉菜单 数值 详细 定义 mamicode 原文地址:https://www.cnblogs.com/qing2019/p/12820339.html
纹理
3D模型纹理
纹理应该是 32x32,64x64,128x128这种格式的。可以在项目的 Assets文件夹中简单地添加纹理,之后它们会出现在 Project视图中。
一旦纹理被导入,你就可以将它分配给 Material。Material能被应用于网格,粒子系统或 GUI纹理。使用 Import Settings,它就可以被转变为游戏中不同类型应用程序的 Cubemap或 Normalmap。GUI
粒子
星粒子系统创建和使用材质
设置材质属性
有两种方法能将纹理应用于属性。
内置着色器
着色器技术细节
几个不同的材质引用同一个纹理是可行的。这些材质可能也使用相同或不同的着色器,这取决于实际需求。
下面这个例子使用了三个材质,两个着色器和一个纹理。
这些 bodywork材质使用同一个定制化着色器 "Carbody Shader"。使用定制化着色器是因为这个着色器为车
子添加了额外的特性,比如说金属闪亮渲染,或自定义损伤遮掩特性。
每个车身材质都引用 "Car Texture",这个纹理 map包含bodywork的所有细节,且没有特定的油漆颜色。
Carbody Shader接受一个色调 (tint colour),这个色调为红车和蓝车设置不同的颜色,令这两辆车在只使用了一个纹理的情况下看起来不同。
车轮模型也使用独立的材质,不过这次每辆车的车轮共享同一个材质。车轮材质使用 Standard Shader,且再一次引用 Car Texture。
注意车子纹理包含了 bodywork和车轮的细节。这是一个纹理地图集 (texture atlas),表示纹理图片的不同部分被显示地映射到模型的不同部分。
即使 bodywork材质使用一个包含车轮图片的纹理,但是车轮也不会出现在body上,因为这部分纹理并没有映射到 bodywork几何上。
类似的,车轮材质也使用同一个包含bodywork细节的纹理。bodywork细节也不会出现在车轮上。
这种映射是通过外部 3d应用里的 3D artist完成的,被称为 "UV mapping"
更具体地,着色器(Shaders)定义了:
材质(Material)定义了: