Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Material

继承: Resource < RefCounted < Object

派生: BaseMaterial3D, CanvasItemMaterial, FogMaterial, PanoramaSkyMaterial, ParticleProcessMaterial, PhysicalSkyMaterial, PlaceholderMaterial, ProceduralSkyMaterial, ShaderMaterial

用于将如颜色、粗糙度等视觉属性应用于对象的虚拟基类。

描述

Material 即材质,是一种基础资源,能够为几何体着色。所有的材质都继承自它,几乎所有从 VisualInstance3D 派生的节点都带有 Material。有一些标志和参数是在所有材质类型之间共享的,可以在这里进行配置。

重要的是,你可以继承 Material 以在脚本或 GDExtension 中创建你自己的自定义材质类型。

教程

属性

Material

next_pass

int

render_priority

方法

bool

_can_do_next_pass ( ) virtual const

bool

_can_use_render_priority ( ) virtual const

Mode

_get_shader_mode ( ) virtual const

RID

_get_shader_rid ( ) virtual const

Resource

create_placeholder ( ) const

void

inspect_native_shader_code ( )


常量

RENDER_PRIORITY_MAX = 127

render_priority 参数的最大值。

RENDER_PRIORITY_MIN = -128

render_priority 参数的最小值。


属性说明

Material next_pass

设置下一阶段使用的 Material。这将使用不同的材质再次渲染对象。

注意:next_pass 材质不一定是紧接在源 Material 之后绘制的。绘制顺序由材质属性、render_priority 和到相机的距离决定。

注意:仅适用于 StandardMaterial3D 和“Spatial”类型的 ShaderMaterial


int render_priority

  • void set_render_priority ( int value )

  • int get_render_priority ( )

设置 3D 场景中物体的渲染优先级。优先级高的物体将被排序在优先级低的物体前面。换句话说,所有具有 render_priority 1 的对象,将在所有具有 render_priority 0 的对象之前渲染。

注意:仅适用于 StandardMaterial3D 和“Spatial”类型的 ShaderMaterial

注意:这不会影响透明对象相对于不透明对象的排序方式,或动态网格体相对于其他不透明网格体的排序方式。这是因为所有透明对象都是在所有不透明对象之后绘制的,并且所有动态不透明网格都是在其他不透明网格之前绘制的。


方法说明

bool _can_do_next_pass ( ) virtual const

仅出于覆盖目的而暴露。你不能直接调用该函数。在内部用于确定 next_pass 是否应显示在编辑器中。


bool _can_use_render_priority ( ) virtual const

仅出于覆盖目的而暴露。你不能直接调用该函数。在内部用于确定 render_priority 是否应显示在编辑器中。


Mode _get_shader_mode ( ) virtual const

仅出于覆盖目的而暴露。你不能直接调用该函数。由各种编辑器工具内部使用。


RID _get_shader_rid ( ) virtual const

仅出于覆盖目的而暴露。你不能直接调用该函数。由各种编辑器工具内部使用。用于访问 MaterialShader 的 RID。


Resource create_placeholder ( ) const

创建该资源的占位符版本(PlaceholderMaterial)。


void inspect_native_shader_code ( )

仅在编辑器中运行时可用。打开一个弹出窗口,其中可视化生成的着色器代码,包括所有变体和内部着色器代码。