Up to date

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

BaseMaterial3D

继承: Material < Resource < RefCounted < Object

派生: ORMMaterial3D, StandardMaterial3D

用于定义网格 3D 渲染属性的抽象基类。

描述

这个类提供了默认的材质,具有多种渲染功能和属性,无需编写着色器代码。详情见下面的教程。

教程

属性

Color

albedo_color

Color(1, 1, 1, 1)

Texture2D

albedo_texture

bool

albedo_texture_force_srgb

false

bool

albedo_texture_msdf

false

float

alpha_antialiasing_edge

AlphaAntiAliasing

alpha_antialiasing_mode

float

alpha_hash_scale

float

alpha_scissor_threshold

float

anisotropy

0.0

bool

anisotropy_enabled

false

Texture2D

anisotropy_flowmap

bool

ao_enabled

false

float

ao_light_affect

0.0

bool

ao_on_uv2

false

Texture2D

ao_texture

TextureChannel

ao_texture_channel

0

Color

backlight

Color(0, 0, 0, 1)

bool

backlight_enabled

false

Texture2D

backlight_texture

bool

billboard_keep_scale

false

BillboardMode

billboard_mode

0

BlendMode

blend_mode

0

float

clearcoat

1.0

bool

clearcoat_enabled

false

float

clearcoat_roughness

0.5

Texture2D

clearcoat_texture

CullMode

cull_mode

0

DepthDrawMode

depth_draw_mode

0

Texture2D

detail_albedo

BlendMode

detail_blend_mode

0

bool

detail_enabled

false

Texture2D

detail_mask

Texture2D

detail_normal

DetailUV

detail_uv_layer

0

DiffuseMode

diffuse_mode

0

bool

disable_ambient_light

false

bool

disable_fog

false

bool

disable_receive_shadows

false

float

distance_fade_max_distance

10.0

float

distance_fade_min_distance

0.0

DistanceFadeMode

distance_fade_mode

0

Color

emission

Color(0, 0, 0, 1)

bool

emission_enabled

false

float

emission_energy_multiplier

1.0

float

emission_intensity

bool

emission_on_uv2

false

EmissionOperator

emission_operator

0

Texture2D

emission_texture

bool

fixed_size

false

bool

grow

false

float

grow_amount

0.0

bool

heightmap_deep_parallax

false

bool

heightmap_enabled

false

bool

heightmap_flip_binormal

false

bool

heightmap_flip_tangent

false

bool

heightmap_flip_texture

false

int

heightmap_max_layers

int

heightmap_min_layers

float

heightmap_scale

5.0

Texture2D

heightmap_texture

float

metallic

0.0

float

metallic_specular

0.5

Texture2D

metallic_texture

TextureChannel

metallic_texture_channel

0

float

msdf_outline_size

0.0

float

msdf_pixel_range

4.0

bool

no_depth_test

false

bool

normal_enabled

false

float

normal_scale

1.0

Texture2D

normal_texture

Texture2D

orm_texture

int

particles_anim_h_frames

bool

particles_anim_loop

int

particles_anim_v_frames

float

point_size

1.0

float

proximity_fade_distance

1.0

bool

proximity_fade_enabled

false

bool

refraction_enabled

false

float

refraction_scale

0.05

Texture2D

refraction_texture

TextureChannel

refraction_texture_channel

0

float

rim

1.0

bool

rim_enabled

false

Texture2D

rim_texture

float

rim_tint

0.5

float

roughness

1.0

Texture2D

roughness_texture

TextureChannel

roughness_texture_channel

0

ShadingMode

shading_mode

1

bool

shadow_to_opacity

false

SpecularMode

specular_mode

0

bool

subsurf_scatter_enabled

false

bool

subsurf_scatter_skin_mode

false

float

subsurf_scatter_strength

0.0

Texture2D

subsurf_scatter_texture

float

subsurf_scatter_transmittance_boost

0.0

Color

subsurf_scatter_transmittance_color

Color(1, 1, 1, 1)

float

subsurf_scatter_transmittance_depth

0.1

bool

subsurf_scatter_transmittance_enabled

false

Texture2D

subsurf_scatter_transmittance_texture

TextureFilter

texture_filter

3

bool

texture_repeat

true

Transparency

transparency

0

bool

use_particle_trails

false

bool

use_point_size

false

Vector3

uv1_offset

Vector3(0, 0, 0)

Vector3

uv1_scale

Vector3(1, 1, 1)

bool

uv1_triplanar

false

float

uv1_triplanar_sharpness

1.0

bool

uv1_world_triplanar

false

Vector3

uv2_offset

Vector3(0, 0, 0)

Vector3

uv2_scale

Vector3(1, 1, 1)

bool

uv2_triplanar

false

float

uv2_triplanar_sharpness

1.0

bool

uv2_world_triplanar

false

bool

vertex_color_is_srgb

false

bool

vertex_color_use_as_albedo

false

方法

bool

get_feature ( Feature feature ) const

bool

get_flag ( Flags flag ) const

Texture2D

get_texture ( TextureParam param ) const

void

set_feature ( Feature feature, bool enable )

void

set_flag ( Flags flag, bool enable )

void

set_texture ( TextureParam param, Texture2D texture )


枚举

enum TextureParam:

TextureParam TEXTURE_ALBEDO = 0

指定每个像素颜色的纹理。

TextureParam TEXTURE_METALLIC = 1

指定每个像素金属度值的纹理。

TextureParam TEXTURE_ROUGHNESS = 2

指定每个像素粗糙度值的纹理。

TextureParam TEXTURE_EMISSION = 3

指定每个像素自发光颜色的纹理。

TextureParam TEXTURE_NORMAL = 4

指定每个像素法向量的纹理。

TextureParam TEXTURE_RIM = 5

指定每个像素边缘值的纹理。

TextureParam TEXTURE_CLEARCOAT = 6

指定每个像素清漆值的纹理。

TextureParam TEXTURE_FLOWMAP = 7

指定每个像素流图方向的纹理,用于 anisotropy

TextureParam TEXTURE_AMBIENT_OCCLUSION = 8

指定每个像素环境光遮蔽的纹理。

TextureParam TEXTURE_HEIGHTMAP = 9

指定每个像素高度的纹理。

TextureParam TEXTURE_SUBSURFACE_SCATTERING = 10

指定每个像素次表面散射的纹理。

TextureParam TEXTURE_SUBSURFACE_TRANSMITTANCE = 11

指定每个像素用于次表面散射的透射率的纹理。

TextureParam TEXTURE_BACKLIGHT = 12

指定每个像素背光颜色的纹理。

TextureParam TEXTURE_REFRACTION = 13

指定每个像素折射强度的纹理。

TextureParam TEXTURE_DETAIL_MASK = 14

指定每个像素细节蒙版混合值的纹理。

TextureParam TEXTURE_DETAIL_ALBEDO = 15

指定每个像素细节颜色的纹理。

TextureParam TEXTURE_DETAIL_NORMAL = 16

指定每个像素细节法线的纹理。

TextureParam TEXTURE_ORM = 17

保存环境光遮蔽、粗糙度和金属度信息的纹理。

TextureParam TEXTURE_MAX = 18

代表 TextureParam 枚举的大小。


enum TextureFilter:

TextureFilter TEXTURE_FILTER_NEAREST = 0

纹理过滤仅从最近的像素读取。这使得纹理从近距离看是像素化的,从远处看是颗粒状的(由于多级渐远纹理没有被采样)。

TextureFilter TEXTURE_FILTER_LINEAR = 1

纹理过滤在最近的 4 个像素之间进行混合。这使得纹理从近处看起来很平滑,从远处看起来却有颗粒感(由于多级渐远纹理没有被采样)。

TextureFilter TEXTURE_FILTER_NEAREST_WITH_MIPMAPS = 2

纹理过滤从最近的像素读取并在最近的 2 个多级渐远纹理之间进行混合(或者如果 ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filtertrue,则使用最近的多级渐远纹理)。这使得纹理从近处看起来像素化,从远处看起来平滑。

TextureFilter TEXTURE_FILTER_LINEAR_WITH_MIPMAPS = 3

纹理过滤在最近的 4 个像素和最近的 2 个多级渐远纹理之间进行混合(或者如果 ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filtertrue,则使用最近的多级渐远纹理)。这使得纹理从近处看起来平滑,从远处看起来也平滑。

TextureFilter TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC = 4

纹理过滤从最近的像素读取并根据表面和相机视图之间的角度在 2 个多级渐远纹理之间进行混合(或者如果 ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filtertrue,则使用最近的多级渐远纹理)。这使得纹理从近处看起来像素化,从远处看起来平滑。各向异性过滤提高了几乎与相机位于一条线上的表面上的纹理质量,但速度稍慢。各向异性过滤级别可以通过调整 ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level 来改变。

TextureFilter TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC = 5

纹理过滤在最近的 4 个像素之间进行混合,并基于表面与相机视图之间的角度在 2 个多级渐远纹理之间进行混合 (或者如果 ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filtertrue,则使用最近的多级渐远纹理)。这使得纹理从近处看起来平滑,从远处看起来也平滑。各向异性过滤提高了几乎与相机位于一条线的表面上的纹理质量,但速度稍慢。各向异性过滤级别可以通过调整 ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level 来改变。

TextureFilter TEXTURE_FILTER_MAX = 6

代表 TextureFilter 枚举的大小。


enum DetailUV:

DetailUV DETAIL_UV_1 = 0

使用 UV 与细节纹理。

DetailUV DETAIL_UV_2 = 1

使用 UV2 与细节纹理。


enum Transparency:

Transparency TRANSPARENCY_DISABLED = 0

该材质将不使用透明度。渲染最快。

Transparency TRANSPARENCY_ALPHA = 1

该材质将使用纹理的 Alpha 值作为透明度。渲染最慢,且会禁用阴影投射。

Transparency TRANSPARENCY_ALPHA_SCISSOR = 2

该材质会将所有低于阈值的值截断,其余部分将保持不透明。不透明部分将在深度预通道中渲染。这比 Alpha 混合的渲染速度更快,但比不透明渲染慢。支持投射阴影。

Transparency TRANSPARENCY_ALPHA_HASH = 3

该材质会将所有低于空间确定性阈值的值截断,其余部分将保持不透明。这比 Alpha 混合的渲染速度更快,但比不透明渲染慢。支持投射阴影。Alpha 哈希适合毛发渲染。

Transparency TRANSPARENCY_ALPHA_DEPTH_PRE_PASS = 4

该材质将使用纹理的 Alpha 值作为透明度,但会在深度预通道阶段丢弃 Alpha 小于 0.99 的片段,并在阴影通道期间丢弃 Alpha 小于 0.1 的片段。支持投射阴影。

Transparency TRANSPARENCY_MAX = 5

代表 Transparency 枚举的大小。


enum ShadingMode:

ShadingMode SHADING_MODE_UNSHADED = 0

该对象不会接受阴影。渲染速度最快,但会禁用与灯光的所有交互。

ShadingMode SHADING_MODE_PER_PIXEL = 1

对象将逐像素进行着色。对于逼真的阴影效果很有用。

ShadingMode SHADING_MODE_PER_VERTEX = 2

对象将逐顶点进行着色。当想要更便宜的着色器并且不关心视觉质量时很有用。尚未实现(该模式的行为类似于 SHADING_MODE_PER_PIXEL)。

ShadingMode SHADING_MODE_MAX = 3

代表 ShadingMode 枚举的大小。


enum Feature:

Feature FEATURE_EMISSION = 0

用于设置 emission_enabled 的常量。

Feature FEATURE_NORMAL_MAPPING = 1

用于设置 normal_enabled 的常量。

Feature FEATURE_RIM = 2

用于设置 rim_enabled 的常量。

Feature FEATURE_CLEARCOAT = 3

用于设置 clearcoat_enabled 的常量。

Feature FEATURE_ANISOTROPY = 4

用于设置 anisotropy_enabled 的常量。

Feature FEATURE_AMBIENT_OCCLUSION = 5

用于设置 ao_enabled 的常量。

Feature FEATURE_HEIGHT_MAPPING = 6

用于设置 heightmap_enabled 的常量。

Feature FEATURE_SUBSURFACE_SCATTERING = 7

用于设置 subsurf_scatter_enabled 的常量。

Feature FEATURE_SUBSURFACE_TRANSMITTANCE = 8

用于设置 subsurf_scatter_transmittance_enabled 的常量。

Feature FEATURE_BACKLIGHT = 9

用于设置 backlight_enabled 的常量。

Feature FEATURE_REFRACTION = 10

用于设置 refraction_enabled 的常量。

Feature FEATURE_DETAIL = 11

用于设置 detail_enabled 的常量。

Feature FEATURE_MAX = 12

代表 Feature 枚举的大小。


enum BlendMode:

BlendMode BLEND_MODE_MIX = 0

默认的混合模式。根据对象的 Alpha 值,将对象的颜色混合到背景上。

BlendMode BLEND_MODE_ADD = 1

对象的颜色被加到背景中。

BlendMode BLEND_MODE_SUB = 2

从背景中减去对象的颜色。

BlendMode BLEND_MODE_MUL = 3

对象的颜色与背景相乘。


enum AlphaAntiAliasing:

AlphaAntiAliasing ALPHA_ANTIALIASING_OFF = 0

禁用该材质的 Alpha 抗锯齿。

AlphaAntiAliasing ALPHA_ANTIALIASING_ALPHA_TO_COVERAGE = 1

启用 AlphaToCoverage。材质中的 Alpha 值会被传递到 AntiAliasing 采样遮罩。

AlphaAntiAliasing ALPHA_ANTIALIASING_ALPHA_TO_COVERAGE_AND_TO_ONE = 2

启用 AlphaToCoverage 并将所有非零的 alpha 值强制设为 1。材质中的 Alpha 值会被传递到 AntiAliasing 采样遮罩。


enum DepthDrawMode:

DepthDrawMode DEPTH_DRAW_OPAQUE_ONLY = 0

默认的深度绘制模式。在不透明预通道(如果有)和不透明通道期间,仅为不透明对象绘制深度。

DepthDrawMode DEPTH_DRAW_ALWAYS = 1

在不透明和透明通道期间,对象将写入深度。靠近相机的透明物体可能会遮挡它们后面的其他透明物体。

注意:这不影响透明对象是否包含在深度预通道中。为此,请参阅 Transparency

DepthDrawMode DEPTH_DRAW_DISABLED = 2

对象不会将其深度写入深度缓冲区,即使在深度预通道期间(如果启用)也是如此。


enum CullMode:

CullMode CULL_BACK = 0

默认剔除模式。对象的背面在不可见时被剔除。面对相机时,背面三角形将被剔除。这导致仅绘制三角形的正面。对于封闭表面网格,这意味着只有网格的外部可见。

CullMode CULL_FRONT = 1

面对相机时,正面三角形将被剔除。这导致仅绘制三角形的背面。对于封闭表面网格,这意味着将绘制网格的内部而不是外部。

CullMode CULL_DISABLED = 2

不执行面剔除;正反面均可见。


enum Flags:

Flags FLAG_DISABLE_DEPTH_TEST = 0

禁用深度测试,所以这个对象将被绘制到在它之前绘制的所有其他对象之上。这会将对象置于透明绘制通道中,并根据到相机的距离对其进行排序。按照绘制顺序在它之后绘制的对象可能会覆盖它。会禁用深度写入。

Flags FLAG_ALBEDO_FROM_VERTEX_COLOR = 1

ALBEDO 设置为网格中指定的每顶点颜色。

Flags FLAG_SRGB_VERTEX_COLOR = 2

顶点颜色被认为使用 sRGB 颜色空间存储,并在渲染期间转换为线性颜色空间。另见 vertex_color_is_srgb

注意:仅在使用 Forward+ 和移动渲染方式时有效。

Flags FLAG_USE_POINT_SIZE = 3

使用点大小来改变图元点的大小。同时改变反射率纹理查找,使用 POINT_COORD 而不是 UV

Flags FLAG_FIXED_SIZE = 4

按深度缩放对象,使其在屏幕上显示的大小始终相同。

Flags FLAG_BILLBOARD_KEEP_SCALE = 5

着色器将保持网格的缩放设置。否则,在用作公告板时会丢失缩放。仅在 billboard_modeBILLBOARD_ENABLED 时适用。

Flags FLAG_UV1_USE_TRIPLANAR = 6

对所有通常会使用 UV 的纹理查找使用三平面纹理查找。

Flags FLAG_UV2_USE_TRIPLANAR = 7

对所有通常会使用 UV2 的纹理查找使用三平面纹理查找。

Flags FLAG_UV1_USE_WORLD_TRIPLANAR = 8

对所有通常会使用 UV 的纹理查找使用三平面纹理查找。

Flags FLAG_UV2_USE_WORLD_TRIPLANAR = 9

对所有通常会使用 UV2 的纹理查找使用三平面纹理查找。

Flags FLAG_AO_ON_UV2 = 10

使用 UV2 坐标从 ao_texture 中查找。

Flags FLAG_EMISSION_ON_UV2 = 11

使用 UV2 坐标从 emission_texture 中查找。

Flags FLAG_ALBEDO_TEXTURE_FORCE_SRGB = 12

强制着色器将反照率从 sRGB 空间转换为线性空间。另见 albedo_texture_force_srgb

Flags FLAG_DONT_RECEIVE_SHADOWS = 13

禁用从其他对象接收阴影。

Flags FLAG_DISABLE_AMBIENT_LIGHT = 14

禁用接收环境光。

Flags FLAG_USE_SHADOW_TO_OPACITY = 15

启用阴影到不透明度功能。

Flags FLAG_USE_TEXTURE_REPEAT = 16

当 UV 坐标超出 0-1 范围时,使纹理能够重复。如果使用其中一种线性过滤模式,则当采样器过滤纹理边缘时,这可能会导致纹理边缘出现伪影。

Flags FLAG_INVERT_HEIGHTMAP = 17

反转从深度纹理读取的值以将它们转换为高度值(高度图)。

Flags FLAG_SUBSURFACE_MODE_SKIN = 18

启用用于次表面散射的皮肤模式,该模式用于改善被用于人体皮肤时的次表面散射的外观。

Flags FLAG_PARTICLE_TRAILS_MODE = 19

启用使 GPUParticles3D 尾迹生效所需的部分着色器。这也需要使用具有适当蒙皮的网格,例如 RibbonTrailMeshTubeTrailMesh。在 GPUParticles3D 网格中使用的材质之外启用该功能将破坏材质的渲染。

Flags FLAG_ALBEDO_TEXTURE_MSDF = 20

启用多通道有符号距离场渲染着色器。

Flags FLAG_DISABLE_FOG = 21

禁用接收基于深度或体积雾。

Flags FLAG_MAX = 22

代表 Flags 枚举的大小。


enum DiffuseMode:

DiffuseMode DIFFUSE_BURLEY = 0

默认的漫反射散射算法。

DiffuseMode DIFFUSE_LAMBERT = 1

漫散射忽略了粗糙度。

DiffuseMode DIFFUSE_LAMBERT_WRAP = 2

当粗糙度增加时,将 Lambert 延伸到 90 度以上。

DiffuseMode DIFFUSE_TOON = 3

使用硬切口进行照明,平滑度受粗糙度影响。


enum SpecularMode:

SpecularMode SPECULAR_SCHLICK_GGX = 0

默认镜面反射斑点。

SpecularMode SPECULAR_TOON = 1

基于粗糙度更改大小的 Toon 斑点。

SpecularMode SPECULAR_DISABLED = 2

没有镜面反射斑点。这比其他镜面反射模式渲染速度稍快。


enum BillboardMode:

BillboardMode BILLBOARD_DISABLED = 0

公告板模式已禁用。

BillboardMode BILLBOARD_ENABLED = 1

对象的 Z 轴将始终面向相机。

BillboardMode BILLBOARD_FIXED_Y = 2

对象的 X 轴将始终面向相机。

BillboardMode BILLBOARD_PARTICLES = 3

分配给 GPUParticles3DCPUParticles3D 节点时被用于粒子系统(翻页动画)。启用 particles_anim_* 属性。

ParticleProcessMaterial.anim_speed_minCPUParticles3D.anim_speed_min 也应设置为大于零的值,以便播放动画。


enum TextureChannel:

TextureChannel TEXTURE_CHANNEL_RED = 0

用来读取纹理的红色通道。

TextureChannel TEXTURE_CHANNEL_GREEN = 1

用来读取纹理的绿色通道。

TextureChannel TEXTURE_CHANNEL_BLUE = 2

用来读取纹理的蓝色通道。

TextureChannel TEXTURE_CHANNEL_ALPHA = 3

用来读取纹理的 Alpha 通道。

TextureChannel TEXTURE_CHANNEL_GRAYSCALE = 4

用于读取纹理的红色、绿色和蓝色通道的线性(非感知)平均值。


enum EmissionOperator:

EmissionOperator EMISSION_OP_ADD = 0

将自发光颜色加到自发光纹理的颜色上。

EmissionOperator EMISSION_OP_MULTIPLY = 1

将自发光颜色乘以自发光纹理的颜色。


enum DistanceFadeMode:

DistanceFadeMode DISTANCE_FADE_DISABLED = 0

不使用距离淡化。

DistanceFadeMode DISTANCE_FADE_PIXEL_ALPHA = 1

根据每个像素与相机的距离,使用 Alpha 通道平滑地淡出对象。

DistanceFadeMode DISTANCE_FADE_PIXEL_DITHER = 2

根据每个像素与相机的距离,使用一种抖动方法平滑地淡出对象。抖动会根据设定的模式丢弃像素,在不启用透明的情况下平滑淡化。在某些硬件上,该选项可能比 DISTANCE_FADE_PIXEL_ALPHA 更快。

DistanceFadeMode DISTANCE_FADE_OBJECT_DITHER = 3

根据对象与相机的距离,使用一种抖动方法平滑淡出对象。抖动根据设定的模式丢弃像素,在不启用透明的情况下平滑淡化。在某些硬件上,该选项可能比 DISTANCE_FADE_PIXEL_ALPHADISTANCE_FADE_PIXEL_DITHER 更快。


属性说明

Color albedo_color = Color(1, 1, 1, 1)

  • void set_albedo ( Color value )

  • Color get_albedo ( )

材质的基础颜色。

注意:如果 detail_enabledtrue 并且指定了 detail_albedo 纹理,则 albedo_color 不会调制细节纹理。可用于通过不指定反照率纹理并使用透明 detail_albedo 纹理,来为材质的部分区域着色。


Texture2D albedo_texture

要乘以 albedo_color 的纹理。用于对象的基本纹理。

如果纹理意外地显得太暗或太亮,请检查 albedo_texture_force_srgb


bool albedo_texture_force_srgb = false

如果为 true,则强制将 albedo_texture 从 sRGB 颜色空间转换为线性颜色空间。另见 vertex_color_is_srgb

该属性应该只在需要时启用(通常在使用 ViewportTexture 作为 albedo_texture 时)。如果 albedo_texture_force_srgb 在不应该的情况下为 true,则纹理会显得太暗。如果 albedo_texture_force_srgb 在不应该的情况下为 false,则纹理会显得太亮。


bool albedo_texture_msdf = false

启用多通道有符号距离场渲染着色器。使用 msdf_pixel_rangemsdf_outline_size 配置 MSDF 参数。


float alpha_antialiasing_edge

  • void set_alpha_antialiasing_edge ( float value )

  • float get_alpha_antialiasing_edge ( )

将在 Alpha 通道上应用抗锯齿的阈值。


AlphaAntiAliasing alpha_antialiasing_mode

要应用的 Alpha 抗锯齿类型。见 AlphaAntiAliasing


float alpha_hash_scale

  • void set_alpha_hash_scale ( float value )

  • float get_alpha_hash_scale ( )

Alpha Hash 的哈希比例。推荐 02 之间的值。


float alpha_scissor_threshold

  • void set_alpha_scissor_threshold ( float value )

  • float get_alpha_scissor_threshold ( )

Alpha 剪刀将丢弃值的阈值。较高的值将导致更多像素被丢弃。如果材质在远处变得太不透明,请尝试增加 alpha_scissor_threshold。如果材质在远处消失,请尝试降低 alpha_scissor_threshold


float anisotropy = 0.0

  • void set_anisotropy ( float value )

  • float get_anisotropy ( )

各向异性效果的强度。如果 anisotropy_flowmap 是一张带有 Alpha 通道的纹理,那么这个值会与其 Alpha 通道相乘。


bool anisotropy_enabled = false

如果为 true,则启用各向异性。各向异性会改变镜面反射斑点的形状并将其与切线空间对齐。可用于拉丝铝材和毛发反射。

注意:各向异性需要网格切线才能正常工作。如果网格中不包含切线,则各向异性效果会显得破碎。

注意:材质的各向异性不应与各向异性纹理过滤相混淆,后者可以通过将 texture_filter 设置为 TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC 来启用。


Texture2D anisotropy_flowmap

用于对切线图进行偏移的纹理,用于各向异性的计算,(如果存在 Alpha 通道)还可以控制各向异性的效果。Flowmap 方向图纹理应该是一张派生图,红色通道表示 X 轴上的变形、绿色通道表示 Y 轴上的变形。小于 0.5 的值会朝负方向进行变形,而大于 0.5 的值则朝正方向变形。

纹理的 Alpha 通道如果存在,则会用于与 anisotropy 效果的强度相乘。完全不透明的像素会保持原始强度,而完全透明的像素则会完全禁用各向异性效果。方向图纹理的蓝色通道会被忽略。


bool ao_enabled = false

如果为 true,启用环境遮挡。环境遮挡根据 ao_texture 使区域变暗。


float ao_light_affect = 0.0

  • void set_ao_light_affect ( float value )

  • float get_ao_light_affect ( )

环境遮挡对灯光照明的影响程度。如果 0,环境遮挡只影响环境光。如果 1,环境遮挡对灯光的影响和对环境光的影响一样大。这可以用来影响环境遮挡效果的强度,但通常看起来不真实。


bool ao_on_uv2 = false

如果为 true,请使用 UV2 坐标从 ao_texture 中查找。


Texture2D ao_texture

定义物体上给定点的环境遮挡量的纹理。


TextureChannel ao_texture_channel = 0

指定 ao_texture 的通道,其中存储环境遮挡信息。可以用来在一个纹理中存储多个效果的信息。例如,如果你将金属效果存储在 R 通道中,将粗糙度存储在 B 通道中,将环境遮挡存储在 G 通道中,就可以减少你使用的纹理数量。


Color backlight = Color(0, 0, 0, 1)

  • void set_backlight ( Color value )

  • Color get_backlight ( )

背光效果使用的颜色。表示穿过物体的光。


bool backlight_enabled = false

如果为 true,则启用背光效果。另请参阅 subsurf_scatter_transmittance_enabled


Texture2D backlight_texture

用于控制每像素背光效果的纹理。与 backlight 相加。


bool billboard_keep_scale = false

如果为 true,则着色器将保持为网格设置的缩放。否则,在做公告板时会丢失缩放。仅在 billboard_mode 不为 BILLBOARD_DISABLED 时适用。


BillboardMode billboard_mode = 0

控制该对象如何面对相机。见 BillboardMode

注意:公告板模式不适合 VR,因为当屏幕贴在你的头上而不是在桌子上时,相机的左右向量不是水平的。详见 GitHub issue #41567


BlendMode blend_mode = 0

材质的混合模式。

注意:Mix 以外的值会强制对象进入透明管道。见 BlendMode


float clearcoat = 1.0

  • void set_clearcoat ( float value )

  • float get_clearcoat ( )

设置清漆效果的强度。设置为 0 看起来与禁用清漆效果相同。


bool clearcoat_enabled = false

如果为 true,则启用清漆渲染。将辅助透明通道添加到照明计算中,从而产生一个添加的镜面反射斑点。这使得材质看起来好像它们表面上有一层透明层,该透明层可以是有光泽的也可以是粗糙的。

注意:如果材质的 shading_modeSHADING_MODE_UNSHADED,则清漆渲染不可见。


float clearcoat_roughness = 0.5

  • void set_clearcoat_roughness ( float value )

  • float get_clearcoat_roughness ( )

设置清漆通道的粗糙度。较高的值会产生较粗糙的清漆,而较低的值会产生更光滑的清漆。


Texture2D clearcoat_texture

定义清漆效果的强度和清漆的光泽度的纹理。强度在红色通道中指定,光泽度在绿色通道中指定。


CullMode cull_mode = 0

根据三角形是朝向还是背离相机,来确定要剔除三角形的哪一侧。请参阅 CullMode


DepthDrawMode depth_draw_mode = 0

确定深度渲染发生的时间。参见 DepthDrawMode。另见 transparency


Texture2D detail_albedo

用于指定细节覆盖层颜色的纹理。detail_albedo 的 alpha 通道会被用作遮罩,即使该材质不透明。要将专用纹理用作遮罩,请参阅 detail_mask

注意:detail_albedo 不会albedo_color 调制。


BlendMode detail_blend_mode = 0

指定 detail_albedo 应如何与当前 ALBEDO 混合。参阅 BlendMode 选项。


bool detail_enabled = false

如果为 true,启用细节叠加。细节是基于 detail_maskdetail_albedo 的 Alpha 通道,在对象表面上混合的第二个纹理。这可用于为对象添加变化,或混合两种不同的反照率/法线纹理。


Texture2D detail_mask

纹理用于指定细节纹理如何与基础纹理混合。detail_mask 可以与 detail_albedo 的 Alpha 通道(如果有)一起使用。


Texture2D detail_normal

用于指定细节覆盖层逐像素法线的纹理。detail_normal 纹理只使用红色和绿色通道;会忽略蓝色和 alpha 通道。从 detail_normal 读取的法线是围绕 Mesh 所提供的表面法线的进行朝向的。

注意:Godot 期望法线贴图使用 X+、Y+、Z+ 坐标系。比较流行的引擎所期望的法线贴图坐标系见这个页面


DetailUV detail_uv_layer = 0

指定细节层是使用 UV 还是 UV2。选项请参阅 DetailUV


DiffuseMode diffuse_mode = 0

用于漫反射光散射的算法。见 DiffuseMode


bool disable_ambient_light = false

如果为 true,则对象不接收环境光。


bool disable_fog = false

如果为 true,则对象不会受到雾的影响(包括体积雾和深度雾)。可用于不着色材质和透明材质(例如例子),不开启时即便完全透明也会受到影响。


bool disable_receive_shadows = false

如果为 true,则对象不会收到投射到其上的阴影。


float distance_fade_max_distance = 10.0

  • void set_distance_fade_max_distance ( float value )

  • float get_distance_fade_max_distance ( )

物体看起来完全不透明的距离。

注意:如果 distance_fade_max_distance 小于 distance_fade_min_distance,则行为相反。物体将在 distance_fade_max_distance 处开始逐渐消失,并在到达 distance_fade_min_distance 时完全消失。


float distance_fade_min_distance = 0.0

  • void set_distance_fade_min_distance ( float value )

  • float get_distance_fade_min_distance ( )

物体开始变得可见的距离。如果物体的距离小于这个距离,它将是不可见的。

注意:如果 distance_fade_min_distance 大于 distance_fade_max_distance,则行为将相反。物体将在 distance_fade_max_distance 处开始逐渐消失,并在到达 distance_fade_min_distance 时完全消失。


DistanceFadeMode distance_fade_mode = 0

指定要使用的淡入淡出类型。可以是任何一个 DistanceFadeMode


Color emission = Color(0, 0, 0, 1)

  • void set_emission ( Color value )

  • Color get_emission ( )

发出的光的颜色。见 emission_enabled


bool emission_enabled = false

如果为 true,则实体会发光。发光会使物体看起来更亮。如果使用 VoxelGI、SDFGI、或 LightmapGI,并且该对象用于烘焙光照,则该对象还可以将光投射到其他对象上。


float emission_energy_multiplier = 1.0

  • void set_emission_energy_multiplier ( float value )

  • float get_emission_energy_multiplier ( )

发出的光的乘数。请参阅 emission_enabled


float emission_intensity

  • void set_emission_intensity ( float value )

  • float get_emission_intensity ( )

发出的光的亮度,单位是尼特(坎德拉/平方米)。仅在启用 ProjectSettings.rendering/lights_and_shadows/use_physical_light_units 时可用。默认值大致相当于一个室内灯泡。


bool emission_on_uv2 = false

使用 UV2emission_texture 中读取。


EmissionOperator emission_operator = 0

设置 emissionemission_texture 的交互方式。可以是加法或乘法。可选值见 EmissionOperator


Texture2D emission_texture

纹理,指定某点的表面发光的程度。


bool fixed_size = false

如果为 true,则无论距离远近,对象都以相同的大小渲染。


bool grow = false

  • void set_grow_enabled ( bool value )

  • bool is_grow_enabled ( )

如果为 true,则启用顶点增长设置。可用于创建基于网格的轮廓,请在第二个材质阶段中使用,并将 cull_mode 设置为 CULL_FRONT。另见 grow_amount

注意:顶点增长无法新建顶点,这意味着锐角可能会造成可见的缺口。缓解方法是在设计网格时就只用平滑的法线,在 3D 创作软件中使用 面加权法线。这样增长就能够将所有轮廓连接到一起,和原始网格一致。


float grow_amount = 0.0

  • void set_grow ( float value )

  • float get_grow ( )

将对象的顶点沿着对应的法线方向生长。仅在 growtrue 时有效。


bool heightmap_deep_parallax = false

  • void set_heightmap_deep_parallax ( bool value )

  • bool is_heightmap_deep_parallax_enabled ( )

如果为 true,则使用视差遮挡贴图来表示材质中的深度,而不是简单的偏移贴图(参见 heightmap_enabled)。这会产生更令人信服的深度效果,但在 GPU 上的成本要高得多。仅在具有显著视觉差异的材质上启用该功能。


bool heightmap_enabled = false

如果为 true,则启用高度映射(也称为“视差映射”或“深度映射”)。另见 normal_enabled。高度映射是 GPU 上的一项要求很高的功能,因此它只能用于具有显著视觉差异的材质。

注意:如果在同一材质上使用三平面贴图,则不支持高度图。如果 uv1_triplanar 被启用,则 heightmap_enabled 的值将被忽略。


bool heightmap_flip_binormal = false

  • void set_heightmap_deep_parallax_flip_binormal ( bool value )

  • bool get_heightmap_deep_parallax_flip_binormal ( )

如果为 true,则在解释高度图时翻转网格的副法线向量。如果相机移动时高度图效果看起来很奇怪(即使使用合理的 heightmap_scale),请尝试将该属性设置为 true


bool heightmap_flip_tangent = false

  • void set_heightmap_deep_parallax_flip_tangent ( bool value )

  • bool get_heightmap_deep_parallax_flip_tangent ( )

如果为 true,则在解释高度图时翻转网格的切线向量。如果相机移动时高度图效果看起来很奇怪(即使使用合理的 heightmap_scale),请尝试将该属性设置为 true


bool heightmap_flip_texture = false

如果为 true,则将高度图纹理解释为深度图,与较暗的值相比,较亮的值在高度上显得“更低”。

可以启用该功能以与为 Godot 3.x 编写的某些材质兼容。如果在 Godot 3.x 中使用反转导入选项来反转深度图,则不需要这样做,在这种情况下,heightmap_flip_texture 应该保持为 false


int heightmap_max_layers

  • void set_heightmap_deep_parallax_max_layers ( int value )

  • int get_heightmap_deep_parallax_max_layers ( )

当相机靠近材质时用于视差遮挡贴图的层数。较高的值会产生更令人信服的深度效果,尤其是在具有陡峭高度变化的材质中。较高的值会显著地增加 GPU 的成本,因此只能在会产生显著视觉差异的材质上增加它。

注意:仅当 heightmap_deep_parallaxtrue 时有效。


int heightmap_min_layers

  • void set_heightmap_deep_parallax_min_layers ( int value )

  • int get_heightmap_deep_parallax_min_layers ( )

当相机远离材质时用于视差遮挡贴图的层数。较高的值会产生更令人信服的深度效果,尤其是在具有陡峭高度变化的材质中。较高的值会显著地增加 GPU 的成本,因此只能在会产生显著视觉差异的材质上增加它。

注意:仅当 heightmap_deep_parallaxtrue 时有效。


float heightmap_scale = 5.0

  • void set_heightmap_scale ( float value )

  • float get_heightmap_scale ( )

用于视差效果的高度图缩放(参见 heightmap_enabled)。调整默认值,使最高点(值 = 255)看起来比最低点(值 = 0)高 5 厘米。较高的值会导致更深的外观,但可能会导致从倾斜角度查看材质时出现伪影,尤其是在相机移动时。负值可用于反转视差效果,但这与使用 heightmap_flip_texture 反转纹理不同,因为材质也会看起来“更接近”相机。在大多数情况下,heightmap_scale 应保持为正值。

注意:如果忽略这个值后高度图效果看起来很奇怪,请尝试调整 heightmap_flip_binormalheightmap_flip_tangent。另请参阅 heightmap_texture 以获取有关创作高度图纹理的建议,因为创作高度图纹理的方式会影响 heightmap_scale 的行为方式。


Texture2D heightmap_texture

用作高度图的纹理。另见 heightmap_enabled

为获得最佳效果,应将纹理归一化(减少 heightmap_scale 以进行补偿)。在 GIMP 中,这可以使用颜色(Colors) > 自动(Auto) > 均衡(Equalize)来完成。如果纹理只使用其可用范围的一小部分,则视差效果可能看起来很奇怪,尤其是当相机移动时。

注意:为了减少内存使用和缩短加载时间,可以使用分辨率较低的高度图纹理,因为大多数高度图仅包含低频数据。


float metallic = 0.0

  • void set_metallic ( float value )

  • float get_metallic ( )

高值使材质看起来更像金属。非金属使用其反射率作为漫射色,并在镜面反射上添加漫射。对于非金属,反射出现在反照率颜色之上。金属使用其反射率作为镜面反射的倍数,并将漫射色设置为黑色,从而产生有色反射。材质在全金属或全非金属时效果更好,介于 01 之间的值只能用于金属和非金属部分之间的混合。要改变反射量,请使用roughness


float metallic_specular = 0.5

  • void set_specular ( float value )

  • float get_specular ( )

调整镜面反射的强度。镜面反射由场景反射和镜面波瓣组成,镜面波瓣是从光源反射的亮点。当设置为 0.0 时,镜面反射将不可见。这与 SPECULAR_DISABLED SpecularMode 不同,因为 SPECULAR_DISABLED 仅适用于来自光源的镜面反射波瓣。

注意:metallic 不同,这不是节能的,所以在大多数情况下应将其保留在 0.5。另见 roughness


Texture2D metallic_texture

用于指定对象的金属质感。这个值会与 metallic 相乘。


TextureChannel metallic_texture_channel = 0

指定存储金属度信息的 metallic_texture 的通道。当将多个效果的信息存储在单个纹理中时,这很有用。例如,如果在红色通道中存储金属度,在蓝色通道中存储粗糙度,在绿色通道中存储环境遮挡,则可以减少使用的纹理数量。


float msdf_outline_size = 0.0

  • void set_msdf_outline_size ( float value )

  • float get_msdf_outline_size ( )

形状轮廓的宽度。


float msdf_pixel_range = 4.0

  • void set_msdf_pixel_range ( float value )

  • float get_msdf_pixel_range ( )

围绕最小和最大可表示有符号距离之间的形状的范围的宽度。


bool no_depth_test = false

如果为 true,深度测试被禁用,对象将按渲染顺序绘制。


bool normal_enabled = false

如果为 true,则启用法线映射。略微影响性能,尤其在移动 GPU 上。


float normal_scale = 1.0

  • void set_normal_scale ( float value )

  • float get_normal_scale ( )

法线贴图的效果强度。


Texture2D normal_texture

用于指定给定像素的法线的纹理。normal_texture 只使用红色和绿色通道;会忽略蓝色和 alpha 通道。从 normal_texture 读取的法线是围绕 Mesh 所提供的表面法线的进行朝向的。

注意:该网格必须在其顶点数据中同时定义法线和切线。否则法线贴图将无法正确渲染,只会使整个表面变暗。如果使用 SurfaceTool 创建几何体,可以使用 SurfaceTool.generate_normalsSurfaceTool.generate_tangents 分别自动生成法线和切线。

注意:Godot 期望法线贴图使用 X+、Y+、Z+ 坐标系。比较流行的引擎所期望的法线贴图坐标系见这个页面

注意:如果 detail_enabledtrue,则 detail_albedo 纹理将在 normal_texture 下方绘制。要在 detail_albedo 纹理之上显示法线贴图,请改用 detail_normal


Texture2D orm_texture

要使用的遮挡/粗糙度/金属纹理。这是对 ORMMaterial3Dao_textureroughness_texture、和 metallic_texture 的更有效替代。环境遮挡被存储在红色通道中。粗糙度贴图被存储在绿色通道中。金属度贴图被存储在蓝色通道中。Alpha 通道将被忽略。


int particles_anim_h_frames

  • void set_particles_anim_h_frames ( int value )

  • int get_particles_anim_h_frames ( )

粒子精灵表中的水平帧数。仅在使用 BILLBOARD_PARTICLES 时启用。见 billboard_mode


bool particles_anim_loop

  • void set_particles_anim_loop ( bool value )

  • bool get_particles_anim_loop ( )

如果为 true,则循环粒子动画。仅在使用 BILLBOARD_PARTICLES 时启用。见 billboard_mode


int particles_anim_v_frames

  • void set_particles_anim_v_frames ( int value )

  • int get_particles_anim_v_frames ( )

粒子精灵表中的垂直帧数。仅在使用 BILLBOARD_PARTICLES 时启用。见 billboard_mode


float point_size = 1.0

  • void set_point_size ( float value )

  • float get_point_size ( )

点大小,单位为像素。见 use_point_size


float proximity_fade_distance = 1.0

  • void set_proximity_fade_distance ( float value )

  • float get_proximity_fade_distance ( )

渐变效果发生的距离。距离越大,物体褪色的时间越长。


bool proximity_fade_enabled = false

  • void set_proximity_fade_enabled ( bool value )

  • bool is_proximity_fade_enabled ( )

如果为 true,则启用接近淡出效果。邻近淡出效果会根据每个像素与另一个对象的距离淡出。


bool refraction_enabled = false

如果为 true,则启用折射效果。根据来自对象后面的光线来扭曲透明度。


float refraction_scale = 0.05

  • void set_refraction ( float value )

  • float get_refraction ( )

折射效果的强度。


Texture2D refraction_texture

控制每个像素折射强度的纹理。会与 refraction_scale 相乘。


TextureChannel refraction_texture_channel = 0

指定存储折射信息的 refraction_texture 的通道。当将多个效果的信息存储在单个纹理中时,这很有用。例如,如果在红色通道中存储折射,在蓝色通道中存储粗糙度,在绿色通道中存储环境遮挡,则可以减少使用的纹理数量。


float rim = 1.0

设置边缘照明效果的强度。


bool rim_enabled = false

如果为 true,则启用边缘效果。边缘照明会增加物体上掠射角度的亮度。

注意:如果材质的 shading_modeSHADING_MODE_UNSHADED,则边缘照明不可见。


Texture2D rim_texture

纹理用于设置每个像素的边缘光照效果的强度。会与 rim 相乘。


float rim_tint = 0.5

  • void set_rim_tint ( float value )

  • float get_rim_tint ( )

渲染边缘效果时,混合光照色和反射色的数量。如果 0 表示使用光色,1 表示使用反照色。一般来说,中间值的效果最好。


float roughness = 1.0

  • void set_roughness ( float value )

  • float get_roughness ( )

表面反射。0 值表示一面完美的镜像,而 1 值则完全模糊了反射。另请参阅 metallic


Texture2D roughness_texture

用于控制每个像素粗糙度的纹理。会与 roughness 相乘。


TextureChannel roughness_texture_channel = 0

指定存储粗糙度信息的roughness_texture的通道。当将多个效果的信息存储在单个纹理中时,这很有用。例如,如果在红色通道中存储金属度,在蓝色通道中存储粗糙度,在绿色通道中存储环境遮挡,则可以减少使用的纹理数量。


ShadingMode shading_mode = 1

设置是否发生着色,逐像素、逐顶点或无阴影。逐顶点时照明速度更快,使其成为移动应用程序的最佳选择,但它看起来比逐像素时差很多。无阴影渲染是最快的,但会禁用与灯光的所有交互。

注意:设置着色模式为顶点着色时目前没有效果,因为顶点着色还没有实现。


bool shadow_to_opacity = false

如果为 true,启用“阴影到不透明度”的渲染模式,在该模式下,光照会修改 Alpha,使阴影区域不透明,非阴影区域透明。对于在 AR 中把阴影叠加到相机画面上很有用。


SpecularMode specular_mode = 0

渲染镜面反射斑点的方法。请参阅 SpecularMode

注意:specular_mode 仅适用于镜面反射斑点。它不影响来自天空的镜面反射、屏幕空间反射、VoxelGI、SDFGI 或 ReflectionProbe。要同时禁用来自这些源的反射,请将 metallic_specular 设置为 0.0


bool subsurf_scatter_enabled = false

如果为 true,则启用次表面散射。模拟光线穿透物体表面,被散射,然后出现。次表面散射质量由 ProjectSettings.rendering/environment/subsurface_scattering/subsurface_scattering_quality 控制。


bool subsurf_scatter_skin_mode = false

如果为 true,则次表面散射将使用针对人类皮肤的颜色和密度进行优化的特殊模式,例如提升次表面散射中红色通道的强度。


float subsurf_scatter_strength = 0.0

  • void set_subsurface_scattering_strength ( float value )

  • float get_subsurface_scattering_strength ( )

次表面散射效果的强度。效果的深度也受到全局的 ProjectSettings.rendering/environment/subsurface_scattering/subsurface_scattering_scale 的控制。


Texture2D subsurf_scatter_texture

用于控制次表面散射强度的纹理。存储在红色纹理通道中。会与 subsurf_scatter_strength 相乘。


float subsurf_scatter_transmittance_boost = 0.0

  • void set_transmittance_boost ( float value )

  • float get_transmittance_boost ( )

次表面散射透射率效果的强度。


Color subsurf_scatter_transmittance_color = Color(1, 1, 1, 1)

  • void set_transmittance_color ( Color value )

  • Color get_transmittance_color ( )

与次表面散射透射率效果相乘的颜色。subsurf_scatter_skin_modetrue 时忽略。


float subsurf_scatter_transmittance_depth = 0.1

  • void set_transmittance_depth ( float value )

  • float get_transmittance_depth ( )

次表面散射透射率效果的深度。


bool subsurf_scatter_transmittance_enabled = false

如果为 true,则启用次表面散射透射率。仅当 subsurf_scatter_enabledtrue 时有效。另请参见 backlight_enabled


Texture2D subsurf_scatter_transmittance_texture

用于乘以次表面散射透射率强度的纹理。另请参见 subsurf_scatter_texturesubsurf_scatter_skin_modetrue 时忽略。


TextureFilter texture_filter = 3

纹理的过滤标志。有关选项,请参阅 TextureFilter

注意:即便这里选择了最近邻过滤,heightmap_texture 也始终使用线性过滤采样。这是为了确保高度图效果看起来符合预期。如果需要像素之间的高度过渡更加清晰,请在图像编辑器中使用最近邻过滤调整高度图纹理的大小。


bool texture_repeat = true

纹理的重复标志。可选项见 TextureFilter


Transparency transparency = 0

该材质的透明模式。一些透明模式将禁用阴影投射。除了 TRANSPARENCY_DISABLED 以外的任何透明模式都会对性能产生较大的影响。另见 blend_mode


bool use_particle_trails = false

如果为 true,则启用 GPUParticles3D 尾迹所需的部分着色器以发挥作用。这也需要使用具有适当蒙皮的网格,例如 RibbonTrailMeshTubeTrailMesh。在 GPUParticles3D 网格中使用的材质之外启用该功能将破坏材质渲染。


bool use_point_size = false

如果为 true,可以改变渲染点大小。

注意:这仅对几何形状基于点而非基于三角形的对象有效。另见 point_size


Vector3 uv1_offset = Vector3(0, 0, 0)

UV 坐标的偏移量。这个量将被添加到顶点函数中的 UV 中。可以用来偏移纹理。Z 分量在启用 uv1_triplanar 时使用,在其他任何地方都不会被使用。


Vector3 uv1_scale = Vector3(1, 1, 1)

UV 坐标的缩放值。将与顶点函数中的 UV 相乘。Z 分量在启用 uv1_triplanar 时使用,在其他任何地方都不会被使用。


bool uv1_triplanar = false

如果为 true,纹理将不使用 UV,而是使用三平面纹理查找来确定如何应用纹理。三平面纹理使用对象表面的方向来混合纹理坐标之间。它从源纹理中读取3次,每个轴一次,然后根据像素与每个轴的紧密程度在结果之间进行混合。这通常用于自然特征,以获得真实的材质混合。由于三平面纹理处理每一个像素需要更多的纹理读取,所以它比普通的UV纹理处理要慢得多。此外,由于它是在三个轴之间混合纹理,所以当你试图实现清晰的纹理时,它是不合适的。


float uv1_triplanar_sharpness = 1.0

  • void set_uv1_triplanar_blend_sharpness ( float value )

  • float get_uv1_triplanar_blend_sharpness ( )

数字越小使纹理混合得越柔和,数字越大使纹理混合得越锐利。

注意:uv1_triplanar_sharpness 被钳制在 0.0150.0(包括)之间,因为超出该范围的值可能看起来会破损,具体取决于网格。


bool uv1_world_triplanar = false

如果为 true,则 UV 的三平面映射是在世界空间而不是对象局部空间中计算的。另见 uv1_triplanar


Vector3 uv2_offset = Vector3(0, 0, 0)

UV2 坐标的偏移量。在顶点函数中这个量将被加到 UV2 中。这可以用来偏移纹理。Z 分量仅在启用 uv2_triplanar 时使用,在其他任何地方不会被使用。


Vector3 uv2_scale = Vector3(1, 1, 1)

UV2 坐标的缩放比例。在顶点函数中该属性乘以 UV2。Z 分量仅在启用 uv2_triplanar 时使用,在其他任何地方不会被使用。


bool uv2_triplanar = false

如果为 true,纹理将不使用 UV,而是使用三平面纹理查找来确定如何应用纹理。三平面纹理使用对象表面的方向来混合纹理坐标之间。它从源纹理中读取 3 次,每个轴一次,然后根据像素与每个轴的紧密程度在结果之间进行混合。这通常用于自然特征,以获得真实的材质混合。由于三平面纹理处理每一个像素需要更多的纹理读取,所以它比普通的 UV 纹理处理要慢得多。此外,由于它是在三个轴之间混合纹理,所以当你试图实现清晰的纹理时,它是不合适的。


float uv2_triplanar_sharpness = 1.0

  • void set_uv2_triplanar_blend_sharpness ( float value )

  • float get_uv2_triplanar_blend_sharpness ( )

数字越小使纹理混合得越柔和,数字越大使纹理混合得越锐利。

注意:uv2_triplanar_sharpness 被钳制在 0.0150.0(包括)之间,因为超出该范围的值可能看起来会破损,具体取决于网格。


bool uv2_world_triplanar = false

如果为 true,则 UV2 的三平面映射是在世界空间而不是对象局部空间中计算的。另见 uv2_triplanar


bool vertex_color_is_srgb = false

如果为 true,则顶点颜色被认为使用 sRGB 颜色空间存储,并在渲染期间被转换为线性颜色空间。如果为 false,则顶点颜色被认为使用线性颜色空间存储并按原样渲染。另见 albedo_texture_force_srgb

注意:仅在使用 Forward+ 和移动渲染方式时有效,不支持兼容模式。


bool vertex_color_use_as_albedo = false

如果为 true,则使用顶点颜色作为反射率颜色。


方法说明

bool get_feature ( Feature feature ) const

如果指定的 Feature 被启用,返回 true


bool get_flag ( Flags flag ) const

如果指定的标志被启用,返回 true。选项见 Flags 枚举值。


Texture2D get_texture ( TextureParam param ) const

返回与指定 TextureParam 关联的 Texture2D


void set_feature ( Feature feature, bool enable )

如果为 true,则启用指定的 FeatureBaseMaterial3D 中的许多功能都需要在使用前启用。这样,仅在指定时才会产生使用该功能的成本。也可以通过将相应的成员设置为 true 来启用功能。


void set_flag ( Flags flag, bool enable )

如果为 true,则启用指定的标志。标志是可以打开和关闭的可选行为。使用该函数一次只能启用一个标志,不能将标志枚举值像位掩码一样进行合并,一次启用或禁用多个标志。也可以通过将相应成员设置为 true 来启用标志。选项见 Flags 枚举值。


void set_texture ( TextureParam param, Texture2D texture )

设置由 param 指定的插槽的纹理。有关可用插槽,请参阅 TextureParam