tutorial_materials - seraph526/godot-se GitHub Wiki
材质 (Materials)
介绍 (Introduction)
材质可以被应用到大多3D物体上,它们用来描述物体如果被光影响。有许类型的材质,但最主要的是FixedMaterial和ShaderMaterial。关于这两个材质的教程查看这里 FixedMaterial 和 ShaderMaterial. 这篇教程是这两种材质共有的基本属性的说明.
标记 (Flags)
无论是什么类型的材质,都有一系列的标记选项。每个标记都有不同的用法,接下来会说明。
可视化 (Visible)
切换材质是否可见。如果没有选择,那么对象不会显示.
双面 & 反向 (Double Sided & Invert Faces)
Godot默认只显示面向摄相机的几何面(三角面)。 为此需要顺时针观看。不可见的面片不绘制节省了大量的CPU资源。 一些平面的物体需要一直被绘制,这种情况可以使用"double sided"标记,无论是朝向摄向机两个面都会被绘制。可以使用invert标记改变法线方向(逆时针方向),虽然这个选项不是很有用,但有些时候还是必要的(如绘制轮廓时).
Unshaded
在没有灯光的情况下,物体通常是黑色的,shading依据灯光的类型和方向渲染最终的效果。当这个标记开启时,漫反射色(Diffuse Color)会显示为和原始贴图一样的效果.
On Top
当开启此选项时,物体会被绘制在所有已绘制的物体的最上层,没有深度测试。通常这个功能用来制作HUD效果和gizmos.
Ligthmap on UV2
当使用亮度贴图(lightmapping)时(查看Baked Light教程),这个选项用于决定亮度贴图是被UV2数组访问以取代普通UV.
参数 (Parameters)
还有一些关于控制绘制和混合的参数:
混合模式 (Blend Mode)
物体通常使用Mix混合模式。其他的混合模式(ADD和Sub)是为了特殊用途而设置(通常是粒子效果,光线等),但是纹理可以设置为这些:
Line Width
绘制线时,每个材质的尺寸可以在这里调整。
深度绘制模式 (Depth Draw Mode)
这个功能是微妙但非常有用的。默认情况下,不透明物体使用尝试缓存绘制,而透明物体不是(但是使用深度排序)。这个功能可以在这里更改,选项如下:
- Always:通常使用深度绘制,即使物体是透明的。这会导致一些小问题,如第一张图中所示(这也是它为什么不是默认选项的原因)
- Opaque Only:只有当物体是固体时才使用尝试绘制,带alpha的物体则不使用深度绘制。这一选项是默认选项,因为它的速度很快,但它也不是最正确的设置。带有交差效果的透明物体会显示错误,特别是混合透明和不透明的区域,像草和树的叶子等。有透明的物体也不有投射阴影,在第二张图上能明显的看出来。
- Alpha Pre-Pass:和上面的一样,但在不透明区域和透明区域会有尝试传递。这使得有透明的物体看起来渲染正确很多。在第三张图上,叶子如何在叶子之前和地板上投射阴影的效果很明显。默认情况下,这个选项是不开启的,因为在PC上,效率还可以,但mobile设备要消耗很多资源,所以使用时要小心。
- Never:从来不给贴图使用深度缓存。这个和"On Top"一起使用时很有用。