BaseMaterial3D¶
继承: Material < Resource < RefCounted < Object
派生: ORMMaterial3D, StandardMaterial3D
用于定义网格的3D渲染属性的抽象基类。
描述¶
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法¶
get_feature(feature: Feature) const |
|
get_texture(param: TextureParam) const |
|
void |
set_feature(feature: Feature, enable: bool) |
void |
|
void |
set_texture(param: TextureParam, texture: Texture2D) |
枚举¶
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
纹理过滤器仅从最近的像素读取。这使得纹理从近距离看是像素化的,从远处看是颗粒状的(由于mipmap没有被采样)。
TextureFilter TEXTURE_FILTER_LINEAR = 1
纹理过滤器在最近的4个像素之间混合。这使得纹理从近距离看很光滑,从远处看很颗粒状(由于mipmap没有被采样)。
TextureFilter TEXTURE_FILTER_NEAREST_WITH_MIPMAPS = 2
纹理过滤器从最近的像素读取并在最近的2个mipmap之间混合(或者使用最近的mipmap,如果ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter是真)。这使得纹理从近距离看是像素化的,从远处看是平滑的。
TextureFilter TEXTURE_FILTER_LINEAR_WITH_MIPMAPS = 3
纹理过滤器在最近的4个像素和最近的2个mipmap之间混合(或者使用最近的mipmap,如果ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter是真)。这使得纹理近距离看起来很光滑,远距离看起来很光滑。
TextureFilter TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC = 4
纹理过滤器从最近的像素读取,并根据表面和摄像机视图之间的角度在2个mipmap之间混合(或者使用最近的mipmap,如果ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter是真)。这使得纹理从近距离看是像素化的,从远处看是平滑的。各向异性过滤提高了几乎与摄像机一致的表面的纹理质量,但速度稍慢。各向异性过滤级别可以通过调整ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level来改变。
TextureFilter TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC = 5
纹理滤镜在最近的4个像素之间混合,并在2个mipmap之间混合(或者使用最近的mipmap,如果ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter是真)基于表面和摄像机视图之间的角度。这使得纹理从近距离看起来平滑,从远处看平滑。各向异性过滤提高了几乎与摄像机一致的表面上的纹理质量,但速度稍慢。各向异性过滤级别可以通过调整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
材质将切断所有低于spatially-deterministic阈值的值,其余的将保持不透明。这比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
对象将按顶点着色。当您想要更便宜的着色器并且不关心视觉质量时很有用。
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
对象的颜色乘以背景。
BlendMode BLEND_MODE_PREMULT_ALPHA = 4
对象的颜色被添加到背景中,阿尔法通道被用来掩盖背景。这实际上是混合混合和添加模式的混合体,对于像火这样的效果很有用,你希望火焰添加,但烟雾混合。默认情况下,这适用于使用预乘纹理的未着色材质。对于着色材质,使用内置的PREMUL_ALPHA_FACTOR,以便也可以调制照明。
enum AlphaAntiAliasing: 🔗
AlphaAntiAliasing ALPHA_ANTIALIASING_OFF = 0
禁用材质的Alpha抗锯齿。
AlphaAntiAliasing ALPHA_ANTIALIASING_ALPHA_TO_COVERAGE = 1
启用AlphaToCoverage。材质中的Alpha值被传递到AntiAliash样本掩码。
AlphaAntiAliasing ALPHA_ANTIALIASING_ALPHA_TO_COVERAGE_AND_TO_ONE = 2
启用AlphaToCoverage并将所有非零alpha值强制为1。材质中的Alpha值被传递到AntiAliash样本掩码。
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+和Mobile渲染方法时有效。
Flags FLAG_USE_POINT_SIZE = 3
使用点大小来改变原始点的大小。还将反照率纹理查找更改为使用POINT_COORD而不是UV。
Flags FLAG_FIXED_SIZE = 4
对象按深度缩放,以便它在屏幕上始终显示相同的大小。
Flags FLAG_BILLBOARD_KEEP_SCALE = 5
着色器将保留网格的比例设置。否则在广告牌时比例会丢失。仅当billboard_mode为BILLBOARD_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
允许着色器的某些部分用于ParticlesGPU路径。这也需要使用具有适当蒙皮的网格,例如RibbonTrailMesh或TubeTrailMesh。在ParticlesGPU网格中使用的材质之外启用此功能将破坏材质渲染。
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
基于粗糙度改变大小的卡通斑点。
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
用于分配给ParticlesGPU和ParticlesCPU节点时的粒子系统(翻页动画)。启用particles_anim_*属性。
ParticleProcessMaterial.anim_speed_min或ParticlesCPU.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_ALPHA和DISTANCE_FADE_PIXEL_DITHER更快。
属性说明¶
Color albedo_color = Color(1, 1, 1, 1) 🔗
材质的底色。
注意:如果detail_enabled为true并且指定了detail_albedo纹理,则albedo_color将不调制细节纹理。这可用于通过不指定反照率纹理而使用透明的detail_albedo纹理来为材质的部分区域着色。
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
纹理乘以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_range和msdf_outline_size配置MSDF参数。
float alpha_antialiasing_edge 🔗
在alpha通道上应用抗锯齿的阈值。
AlphaAntiAliasing alpha_antialiasing_mode 🔗
void set_alpha_antialiasing(value: AlphaAntiAliasing)
AlphaAntiAliasing get_alpha_antialiasing()
要应用的alpha抗锯齿的类型。请参阅AlphaAntiAliasing。
Alpha哈希的哈希尺度。0和2之间的推荐值。
float alpha_scissor_threshold 🔗
alpha剪刀将丢弃值的阈值。更高的值将导致更多的像素被丢弃。如果材质在远处变得太不透明,请尝试增加alpha_scissor_threshold。如果材质在远处消失,请尝试减少alpha_scissor_threshold。
各向异性效应的强度。如果定义了纹理并且纹理包含Alpha通道,则乘以anisotropy_flowmap的Alpha通道。
bool anisotropy_enabled = false 🔗
如果true,则启用各向异性。各向异性改变镜面斑点的形状并将其与切线空间对齐。这对于拉丝铝和头发反射很有用。
注意:各向异性工作需要网格切线,如果网格不包含切线,各向异性效果就会出现断裂。
注意:材质各向异性不应与各向异性纹理过滤混淆,可以通过将texture_filter设置为TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC来启用。
Texture2D anisotropy_flowmap 🔗
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
补偿各向异性计算的切线贴图并可选择控制各向异性效果的纹理(如果存在alpha通道)。流程图纹理应为派生贴图,红色通道表示X轴上的失真,绿色通道表示Y轴上的失真。低于0.5的值将导致负失真,而高于0.5的值将导致正失真。
如果存在,纹理的alpha通道将用于乘以anisotropy效果的强度。完全不透明的像素将保持各向异性效果的原始强度,而完全透明的像素将完全禁用各向异性效果。流程图纹理的蓝色通道被忽略。
如果true,则启用环境遮挡。环境遮挡根据ao_texture使区域变暗。
计算环境遮挡对光源照明的影响。如果0,则环境遮挡仅影响环境光。如果1,则环境遮挡对光源的影响与对环境光的影响相同。这可用于影响环境遮挡效果的强度,但通常看起来不现实。
如果true,则使用UV2坐标从ao_texture中查找。
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
定义对象上给定点的环境遮挡量的纹理。
TextureChannel ao_texture_channel = 0 🔗
void set_ao_texture_channel(value: TextureChannel)
TextureChannel get_ao_texture_channel()
指定ao_texture中存储环境遮挡信息的通道。当您在单个纹理中存储多个效果的信息时,这很有用。例如,如果您在红色通道中存储金属,在蓝色通道中存储粗糙度,在绿色通道中存储环境遮挡,您可以减少使用的纹理数量。
Color backlight = Color(0, 0, 0, 1) 🔗
背光效果使用的颜色。表示穿过物体的光。
bool backlight_enabled = false 🔗
如果true,则启用背光效果。另请参见subsurf_scatter_transmittance_enabled。
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
用于控制每个像素的背光效果的纹理。添加到backlight。
bool billboard_keep_scale = false 🔗
如果true,着色器将保留网格设置的比例。否则,在广告牌时比例会丢失。仅当billboard_mode不是BILLBOARD_DISABLED时才适用。
BillboardMode billboard_mode = 0 🔗
void set_billboard_mode(value: BillboardMode)
BillboardMode get_billboard_mode()
控制对象如何面对摄像机。请参阅BillboardMode。
注意:广告牌模式不适合VR,因为当屏幕贴在你的头上而不是桌子上时,摄像机的左右矢量不是水平的。有关详细信息,请参阅GitHub问题#41567。
材质的混合模式。
注意:Mix以外的值强制对象进入透明管道。请参阅BlendMode。
设置清漆效果的强度。设置为0看起来与禁用清漆效果相同。
bool clearcoat_enabled = false 🔗
如果true,则启用清漆渲染。在照明计算中添加第二个透明通道,从而添加镜面斑点。这使得材质看起来好像上面有一个透明的层,可以是光滑的,也可以是粗糙的。
注意:如果材质的shading_mode是SHADING_MODE_UNSHADED,则Clear外套渲染不可见。
float clearcoat_roughness = 0.5 🔗
设置透明涂层通道的粗糙度。较高的值导致更粗糙的透明涂层,而较低的值导致更平滑的透明涂层。
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
定义清漆效果强度和清漆光泽度的纹理。强度在红色通道中指定,而光泽度在绿色通道中指定。
确定要剔除的三角形的哪一边,具体取决于三角形是朝向摄像机还是远离摄像机。请参阅CullMode。
DepthDrawMode depth_draw_mode = 0 🔗
void set_depth_draw_mode(value: DepthDrawMode)
DepthDrawMode get_depth_draw_mode()
确定何时进行深度渲染。请参阅DepthDrawMode。另请参阅transparency。
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
指定细节覆盖颜色的纹理。detail_albedo的alpha通道用作蒙版,即使材质是不透明的。要使用专用纹理作为蒙版,请参阅detail_mask。
注:detail_albedo是不是由albedo_color调制的。
BlendMode detail_blend_mode = 0 🔗
指定detail_albedo应如何与当前ALBEDO混合。有关选项,请参阅BlendMode。
如果true,则启用细节叠加。细节是基于detail_mask和detail_albedo的alpha通道在对象表面混合的第二个纹理。这可用于为对象添加变化,或在两种不同的反照率/正常纹理之间混合。
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
纹理用于指定细节纹理如何与基础纹理混合。detail_mask可以与detail_albedo的alpha通道(如果有)一起使用。
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
指定细节覆盖的每像素法线的纹理。detail_normal纹理仅使用红色和绿色通道;蓝色和alpha通道被忽略。从detail_normal读取的法线围绕Mesh提供的表面法线定向。
注意:i3D期望法线贴图使用X+、Y+和Z+坐标。有关流行引擎期望的法线贴图坐标的比较,请参阅此页。
DetailUV detail_uv_layer = 0 🔗
指定细节层是使用UV还是UV2。有关选项,请参阅DetailUV。
DiffuseMode diffuse_mode = 0 🔗
void set_diffuse_mode(value: DiffuseMode)
DiffuseMode get_diffuse_mode()
用于漫射光散射的算法参见DiffuseMode。
bool disable_ambient_light = false 🔗
如果true,则对象没有接收到环境光。
如果true,则对象不会受到雾的影响(无论是体积雾还是深度雾)。这对于未阴影或透明的材质(例如粒子)很有用,如果没有此设置,即使完全透明也会受到影响。
bool disable_receive_shadows = false 🔗
如果true,则对象不会收到否则会投射到它上的阴影。
float distance_fade_max_distance = 10.0 🔗
物体看起来完全不透明的距离。
注意:如果distance_fade_max_distance小于distance_fade_min_distance,则行为将反转,对象将在distance_fade_max_distance处开始消失,一旦到达distance_fade_min_distance,将完全消失。
float distance_fade_min_distance = 0.0 🔗
物体开始变得可见的距离。如果物体距离小于这个距离,它将是不可见的。
注:如果distance_fade_min_distance大于distance_fade_max_distance,则行为将反转,对象将在distance_fade_max_distance处开始消失,一旦到达distance_fade_min_distance,将完全消失。
DistanceFadeMode distance_fade_mode = 0 🔗
void set_distance_fade(value: DistanceFadeMode)
DistanceFadeMode get_distance_fade()
指定要使用的淡入淡出类型。可以是任何DistanceFadeMode。
Color emission = Color(0, 0, 0, 1) 🔗
发射光的颜色。参见emission_enabled。
bool emission_enabled = false 🔗
如果true,则主体发光。发光使物体看起来更亮。如果使用VoxelGI、SDFGI或Lightmass并且该物体用于烘烤照明,则该物体也可以在其他物体上发光。
float emission_energy_multiplier = 1.0 🔗
发射光的乘法器。见emission_enabled。
发射光的亮度,以尼特(坎德拉每平方米)为单位。仅在启用ProjectSettings.rendering/lights_and_shadows/use_physical_light_units时可用。默认值大致相当于室内灯泡。
bool emission_on_uv2 = false 🔗
使用UV2读取emission_texture。
EmissionOperator emission_operator = 0 🔗
void set_emission_operator(value: EmissionOperator)
EmissionOperator get_emission_operator()
设置emission如何与emission_texture交互。可以加法或乘法。有关选项,请参阅EmissionOperator。
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
指定表面在给定点发出多少光的纹理。
如果true,则无论距离如何,对象都以相同的大小呈现。
如果true,则启用顶点增长设置。这可用于使用第二次材质传递创建基于网格的轮廓,并将其cull_mode设置为CULL_FRONT。另请参见grow_amount。
注意:顶点增长不能创建新的顶点,这意味着尖锐的角落可能会出现可见的间隙。这可以通过在3D创作软件中专门使用面部加权法线来设计网格以使用平滑法线来缓解。在这种情况下,增长将能够将每个轮廓连接在一起,就像在原始网格中一样。
沿法线方向增长对象顶点。仅当grow为true时有效。
bool heightmap_deep_parallax = false 🔗
如果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(value: bool)
bool get_heightmap_deep_parallax_flip_binormal()
如果true,则在解释高度图时翻转网格的副法线向量。如果摄像机移动时高度图效果看起来很奇怪(即使使用合理的heightmap_scale),请尝试将其设置为true。
bool heightmap_flip_tangent = false 🔗
void set_heightmap_deep_parallax_flip_tangent(value: bool)
bool get_heightmap_deep_parallax_flip_tangent()
如果true,则在解释高度图时翻转网格的切向量。如果摄像机移动时高度图效果看起来很奇怪(即使使用合理的heightmap_scale),请尝试将其设置为true。
bool heightmap_flip_texture = false 🔗
如果true,则将高度图纹理解释为深度图,与较暗的值相比,较亮的值在高度上看起来“较低”。
void set_heightmap_deep_parallax_max_layers(value: int)
int get_heightmap_deep_parallax_max_layers()
当摄像机靠近材质时,用于视差遮挡映射的层数。更高的值会产生更令人信服的深度效果,尤其是在高度变化很大的材质中。更高的值在GPU上有很大的成本,因此应该只在产生显著视觉差异的材质上增加。
注:仅当heightmap_deep_parallax为true时有效。
void set_heightmap_deep_parallax_min_layers(value: int)
int get_heightmap_deep_parallax_min_layers()
当摄像机远离材质时用于视差遮挡映射的层数。更高的值会产生更令人信服的深度效果,尤其是在高度变化很大的材质中。更高的值在GPU上有很大的成本,因此应该只在产生显著视觉差异的材质上增加。
注:仅当heightmap_deep_parallax为true时有效。
用于视差效果的高度图比例(参见heightmap_enabled)。调整默认值,使最高点(值=255)看起来比最低点(值=0)高5厘米。较高的值会导致更深的外观,但可能会导致从倾斜角度看材质时出现伪影,尤其是当摄像机移动时。负值可用于反转视差效果,但这与使用heightmap_flip_texture反转纹理不同,因为材质也会看起来“更接近”摄像机。在大多数情况下,heightmap_scale应保持为正值。
注意:如果无论这个值如何,高度贴图效果看起来都很奇怪,请尝试调整heightmap_flip_binormal和heightmap_flip_tangent。另请参阅heightmap_texture以获取有关创作高度贴图纹理的建议,因为高度贴图纹理的创作方式会影响heightmap_scale的行为。
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
用作高度图的纹理。另请参见heightmap_enabled。
为了获得最佳效果,纹理应该被归一化(用heightmap_scale来补偿)。在GIMP中,这可以使用Colors>Auto>Equalize来完成。如果纹理只使用其可用范围的一小部分,视差效果可能看起来很奇怪,尤其是当摄像机移动时。
注意:为了减少内存使用并缩短加载时间,您可以使用分辨率较低的高度图纹理,因为大多数高度图仅由低频数据组成。
较高的值使材质看起来更像金属。非金属使用它们的反照率作为漫反射色,并为镜面反射增加漫反射。对于非金属,反射出现在反照率颜色的顶部。金属使用它们的反照率作为镜面反射的倍增器,并将漫反射色设置为黑色,从而产生有色反射。当完全金属或完全非金属时,材质工作得更好,0和1之间的值只能用于金属和非金属部分之间的混合。要改变反射量,请使用roughness。
float metallic_specular = 0.5 🔗
调整镜面反射的强度。镜面反射由场景反射和镜面波瓣组成,镜面波瓣是从光源反射的亮点。当设置为0.0时,将看不到镜面反射。这与SPECULAR_DISABLEDSpecularMode不同,因为SPECULAR_DISABLED仅适用于来自光源的镜面波瓣。
注:与metallic不同,这不是节能的,因此在大多数情况下应该将其保持在0.5。另见roughness。
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
用于为对象指定金属的纹理。这乘以metallic。
TextureChannel metallic_texture_channel = 0 🔗
void set_metallic_texture_channel(value: TextureChannel)
TextureChannel get_metallic_texture_channel()
指定存储金属信息的metallic_texture的通道。当您在单个纹理中存储多个效果的信息时,这很有用。例如,如果您将金属存储在红色通道中,粗糙度存储在蓝色通道中,环境遮挡存储在绿色通道中,您可以减少使用的纹理数量。
float msdf_outline_size = 0.0 🔗
形状轮廓的宽度。
float msdf_pixel_range = 4.0 🔗
形状周围的宽度范围在最小和最大可表示有符号距离之间。
如果true,则禁用深度测试,对象将按渲染顺序绘制。
如果true,则启用正常映射。这有轻微的性能成本,尤其是在移动GPU上。
法线贴图效果的强度。
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
用于指定给定像素处法线的纹理。normal_texture仅使用红色和绿色通道;蓝色和alpha通道被忽略。从normal_texture读取的法线围绕Mesh提供的表面法线定向。
注意:网格必须在其顶点数据中定义法线和切线。否则,法线贴图将无法正确渲染,只会使整个表面变暗。如果使用SurfaceTool创建几何体,您可以使用SurfaceTool.generate_normals()和SurfaceTool.generate_tangents()分别自动生成法线和切线。
注意:i3D期望法线贴图使用X+、Y+和Z+坐标。有关流行引擎期望的法线贴图坐标的比较,请参阅此页。
注意:如果detail_enabled为true,则detail_albedo纹理将绘制在normal_texture下方。要在detail_albedo纹理的上方显示法线贴图],请改用detail_normal。
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
要使用的遮挡/粗糙/金属纹理。这是ORMMaterial3D中ao_texture、roughness_texture和metallic_texture的更有效替换。环境遮挡存储在红色通道中。粗糙贴图存储在绿色通道中。金属贴图存储在蓝色通道中。alpha通道被忽略。
粒子精灵表中的水平帧数。仅在使用BILLBOARD_PARTICLES时启用。请参阅billboard_mode。
如果true,则循环粒子动画。仅在使用BILLBOARD_PARTICLES时启用。请参阅billboard_mode。
粒子精灵表中的垂直帧数。仅在使用BILLBOARD_PARTICLES时启用。请参阅billboard_mode。
以像素为单位的点大小。参见use_point_size。
float proximity_fade_distance = 1.0 🔗
淡出效果发生的距离。距离越大,物体淡出所需的时间越长。
bool proximity_fade_enabled = false 🔗
如果true,则启用接近淡入淡出效果。接近淡入淡出效果会根据每个像素到另一个对象的距离淡出每个像素。
bool refraction_enabled = false 🔗
如果true,则启用折射效果。根据物体后面的光线扭曲透明度。
注意:折射是使用屏幕纹理实现的。只有不透明的材质会出现在折射中,因为透明的材质不会出现在屏幕纹理中。
float refraction_scale = 0.05 🔗
折射效应的强度。
Texture2D refraction_texture 🔗
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
控制每个像素折射强度的纹理。乘以refraction_scale。
TextureChannel refraction_texture_channel = 0 🔗
void set_refraction_texture_channel(value: TextureChannel)
TextureChannel get_refraction_texture_channel()
指定refraction_texture中存储折射信息的通道。这在将多个效果的信息存储在一个纹理中时很有用,例如,如果将折射存储在红色通道,粗糙度存储在蓝色通道,环境遮挡存储在绿色通道,则可以减少所使用的纹理数量。
设置边缘照明效果的强度。
如果true,则启用边缘效果。边缘照明在物体的扫视角度增加亮度。
注:如果材质的shading_mode为SHADING_MODE_UNSHADED,则边缘照明不可见。
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
纹理用于设置每个像素的边缘光效强度。乘以rim。
渲染边缘效果时混合光线和反照率颜色的量。如果0使用浅色,而1表示使用反照率颜色。中间值通常效果最好。
表面反射。0的值表示完美的镜子,而1的值完全模糊反射。另见metallic。
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
用于控制每个像素的粗糙度的纹理。乘以roughness。
TextureChannel roughness_texture_channel = 0 🔗
void set_roughness_texture_channel(value: TextureChannel)
TextureChannel get_roughness_texture_channel()
指定存储粗糙度信息的roughness_texture的通道。当您在单个纹理中存储多个效果的信息时,这很有用。例如,如果您在红色通道中存储金属,在蓝色通道中存储粗糙度,在绿色通道中存储环境遮挡,您可以减少使用的纹理数量。
ShadingMode shading_mode = 1 🔗
void set_shading_mode(value: ShadingMode)
ShadingMode get_shading_mode()
设置着色是按像素、按顶点还是无着色。按顶点着色更快,使其成为移动应用程序的最佳选择,但它看起来比按像素差得多。无着色渲染最快,但禁用与光源的所有交互。
bool shadow_to_opacity = false 🔗
如果true,则启用“阴影到不透明度”渲染模式,其中照明修改alpha,因此阴影区域是不透明的,而非阴影区域是透明的。用于在AR中将阴影叠加到摄像机馈送上。
SpecularMode specular_mode = 0 🔗
void set_specular_mode(value: SpecularMode)
SpecularMode get_specular_mode()
渲染镜面斑点的方法。请参阅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 🔗
地下散射效果的强度。效果的深度也由全局设置的ProjectSettings.rendering/environment/subsurface_scattering/subsurface_scattering_scale控制。
Texture2D subsurf_scatter_texture 🔗
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
用于控制地下散射强度的纹理。存储在红色纹理通道中。乘以subsurf_scatter_strength。
float subsurf_scatter_transmittance_boost = 0.0 🔗
透射率效应的次表面散射的强度。
Color subsurf_scatter_transmittance_color = Color(1, 1, 1, 1) 🔗
将次表面散射透射率效果乘以的颜色。如果subsurf_scatter_skin_mode为true,则忽略。
float subsurf_scatter_transmittance_depth = 0.1 🔗
地下散射的深度影响透射率。
bool subsurf_scatter_transmittance_enabled = false 🔗
如果true,则启用亚表面散射透射率。仅当subsurf_scatter_enabled为true时有效。另见backlight_enabled。
Texture2D subsurf_scatter_transmittance_texture 🔗
void set_texture(param: TextureParam, texture: Texture2D)
Texture2D get_texture(param: TextureParam) const
用于乘以次表面散射透射率强度的纹理。另见subsurf_scatter_texture。如果subsurf_scatter_skin_mode为true,则忽略该纹理。
TextureFilter texture_filter = 3 🔗
void set_texture_filter(value: TextureFilter)
TextureFilter get_texture_filter()
过滤纹理的标志。有关选项,请参阅TextureFilter。
注意:heightmap_texture始终使用线性滤波进行采样,即使在此处选择了最近邻滤波。这是为了确保高度图效果看起来符合预期。如果您需要像素之间更清晰的高度转换,请在具有最近邻滤波的图像编辑器中调整高度图纹理的大小。
重复纹理的标志。有关选项,请参阅TextureFilter。
Transparency transparency = 0 🔗
void set_transparency(value: Transparency)
Transparency get_transparency()
材质的透明度模式。某些透明度模式将禁用阴影投射。与不透明渲染相比,TRANSPARENCY_DISABLED以外的任何透明度模式都对性能有更大的影响。另请参见blend_mode。
bool use_particle_trails = false 🔗
如果true,则启用ParticlesGPU路径所需的着色器部分。这还需要使用具有适当皮肤的网格,例如RibbonTrailMesh或TubeTrailMesh。在ParticlesGPU网格中使用的材质之外启用此功能将破坏材质渲染。
如果true,则可以更改渲染点大小。
注意:这仅对几何形状基于点而不是基于三角形的对象有效。另见point_size。
Vector3 uv1_offset = Vector3(0, 0, 0) 🔗
偏移多少UV坐标。该量将被添加到顶点函数中的UV中。这可用于偏移纹理。启用uv1_triplanar时使用Z分量,但在其他任何地方都不使用。
Vector3 uv1_scale = Vector3(1, 1, 1) 🔗
缩放多少UV坐标。这乘以顶点函数中的UV。启用uv1_triplanar时使用Z组件,但在其他任何地方都不使用。
如果true,而不是使用UV纹理将使用三平面纹理查找来确定如何应用纹理。三平面使用对象表面的方向来混合纹理坐标。它从源纹理读取3次,每个轴读取一次,然后根据像素与每个轴的对齐程度在结果之间混合。这通常用于自然特征以获得真实的材质混合。因为三平面纹理需要每个像素更多的纹理读取,它比普通的UV纹理慢得多。此外,因为它混合了三个轴之间的纹理,所以当你试图实现清晰的纹理时,它是不合适的。
float uv1_triplanar_sharpness = 1.0 🔗
较低的数字混合纹理更柔和,而较高的数字混合纹理更锐利。
注意:uv1_triplanar_sharpness被夹在0.0和150.0(包括)之间,因为该范围之外的值可能看起来会损坏,具体取决于网格。
bool uv1_world_triplanar = false 🔗
如果true,则UV的三平面映射在世界空间而不是对象局部空间中计算。另见uv1_triplanar。
Vector3 uv2_offset = Vector3(0, 0, 0) 🔗
偏移多少UV2坐标。该量将被添加到顶点函数中的UV2中。这可用于偏移纹理。启用uv2_triplanar时使用Z分量,但在其他任何地方都不使用。
Vector3 uv2_scale = Vector3(1, 1, 1) 🔗
缩放多少UV2坐标。这在顶点函数中乘以UV2。启用uv2_triplanar时使用Z分量,但在其他任何地方都不使用。
如果true,而不是使用UV2纹理将使用三平面纹理查找来确定如何应用纹理。三平面使用对象表面的方向来混合纹理坐标。它从源纹理读取3次,每个轴读取一次,然后根据像素与每个轴的对齐程度在结果之间混合。这通常用于自然特征以获得真实的材质混合。因为三平面纹理需要每个像素更多的纹理读取,所以比正常的UV纹理要慢得多。此外,因为它混合了三个轴之间的纹理,所以当你试图实现清晰的纹理时,它是不合适的。
float uv2_triplanar_sharpness = 1.0 🔗
较低的数字混合纹理更柔和,而较高的数字混合纹理更锐利。
注意:uv2_triplanar_sharpness被夹在0.0和150.0(包括)之间,因为该范围之外的值可能看起来会损坏,具体取决于网格。
bool uv2_world_triplanar = false 🔗
如果true,则UV2的三平面映射在世界空间而不是对象局部空间中计算。另见uv2_triplanar。
bool vertex_color_is_srgb = false 🔗
如果true,则认为顶点颜色存储在sRGB颜色空间中,并在渲染时转换为线性颜色空间。如果false,则认为顶点颜色存储在线性颜色空间中,并按原样渲染。另见albedo_texture_force_srgb。
注意:仅在使用Forward+和Mobile渲染方法时有效,不兼容。
bool vertex_color_use_as_albedo = false 🔗
如果true,则顶点颜色用作反照率颜色。
方法说明¶
bool get_feature(feature: Feature) const 🔗
如果启用了指定的Feature,则返回true。
bool get_flag(flag: Flags) const 🔗
如果启用了指定的标志,则返回true。有关选项,请参阅Flags枚举器。
Texture2D get_texture(param: TextureParam) const 🔗
返回与指定TextureParam关联的Texture2D。
void set_feature(feature: Feature, enable: bool) 🔗
如果true,则启用指定的Feature。BaseMaterial3D中的许多可用功能需要在使用前启用。这样使用该功能的成本仅在指定时产生。也可以通过将相应的成员设置为true来启用功能。
void set_flag(flag: Flags, enable: bool) 🔗
如果true,则启用指定的标志。标志是可以打开和关闭的可选行为。使用此功能一次只能启用一个标志,标志枚举器不能一起进行位掩码以同时启用或禁用多个标志。也可以通过将相应的成员设置为true来启用标志。有关选项,请参阅Flags枚举器。
void set_texture(param: TextureParam, texture: Texture2D) 🔗
设置由param指定的槽的纹理。有关可用槽,请参阅TextureParam。