GeometryRender¶
继承: VisualRender < Item3D < Item < Object
派生: ParticlesCPU, ICSGShapeBase, ParticlesGPU, TextRender, MeshRender, MultiMeshRender, SpriteBase
基于几何体的可视化实例的基本节点。
描述¶
基于几何的视觉实例的基本节点。共享一些常见功能,例如可见性和自定义材质。
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法¶
get_instance_shader_parameter(name: StringName) const |
|
void |
set_instance_shader_parameter(name: StringName, value: Variant) |
枚举¶
enum ShadowCastingSetting: 🔗
ShadowCastingSetting SHADOW_CASTING_SETTING_OFF = 0
不会投射任何阴影。使用它来提高不太可能投射明显阴影(如碎片)的小几何体的性能。
ShadowCastingSetting SHADOW_CASTING_SETTING_ON = 1
将从GeometryInstance3D中的所有可见面投射阴影。
会考虑剔除,所以没有渲染的脸在阴影投射时不会被考虑在内。
ShadowCastingSetting SHADOW_CASTING_SETTING_DOUBLE_SIDED = 2
将从GeometryInstance3D中的所有可见面投射阴影。
不会考虑剔除,所以阴影铸造时会考虑所有的面。
ShadowCastingSetting SHADOW_CASTING_SETTING_SHADOWS_ONLY = 3
只会显示从该对象投射的阴影。
换句话说,实际的网格将不可见,只有从网格投射的阴影将可见。
enum GIMode: 🔗
GIMode GI_MODE_DISABLED = 0
禁用全局照明模式。用于对全局照明没有贡献的动态对象(如字符)。使用VoxelGI和SDFGI时,几何体将接收间接照明和反射,但几何体在GI烘焙中不会被考虑。
GIMode GI_MODE_STATIC = 1
烘烤全局照明模式。用于有助于全局照明的静态对象(例如关卡几何)。此GI模式在使用VoxelGI、SDFGI和Lightmass时有效。
GIMode GI_MODE_DYNAMIC = 2
动态全局光照模式。用于有助于全局光照的动态对象。此GI模式仅在使用VoxelGI时有效,但比GI_MODE_STATIC具有更高的性能影响。当使用其他GI方法时,这将与GI_MODE_DISABLED作用相同。当使用Lightmass时,对象将使用光照贴图探针而不是使用烘焙光照贴图纹理接收间接光照。
enum LightmapScale: 🔗
LightmapScale LIGHTMAP_SCALE_1X = 0
已弃用: 请改用 gi_lightmap_texel_scale。
使用Lightmass进行光照贴图的标准纹理密度。
LightmapScale LIGHTMAP_SCALE_2X = 1
已弃用: 请改用 gi_lightmap_texel_scale。
将纹理密度乘以2×以使用Lightmass进行光照贴图。为确保纹理密度的一致性,请在将网格缩放1.5到3.0之间时使用此选项。
LightmapScale LIGHTMAP_SCALE_4X = 2
已弃用: 请改用 gi_lightmap_texel_scale。
将纹理密度乘以4倍以使用Lightmass进行光照贴图。为确保纹理密度的一致性,请在将网格缩放3.0和6.0之间的系数时使用此选项。
LightmapScale LIGHTMAP_SCALE_8X = 3
已弃用: 请改用 gi_lightmap_texel_scale。
将纹理密度乘以8×以使用Lightmass进行光照贴图。为确保纹理密度的一致性,请在将网格缩放系数大于6.0时使用此选项。
LightmapScale LIGHTMAP_SCALE_MAX = 4
已弃用: 请改用 gi_lightmap_texel_scale。
表示LightmapScale枚举的大小。
enum VisibilityRangeFadeMode: 🔗
VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_DISABLED = 0
不会自行消失或其可见性依赖关系,而是使用滞后。这是手动LOD的最快方法,但它可能会导致明显的LOD转换,具体取决于LOD网格的创作方式。有关详细信息,请参阅visibility_range_begin和Item3D.visibility_parent。
VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_SELF = 1
会在达到自身可见范围的极限时自行淡出,这比VISIBILITY_RANGE_FADE_DISABLED慢,但能提供更平滑的过渡,淡出范围由visibility_range_begin_margin和visibility_range_end_margin决定。
注意:仅在使用前进+渲染方法时受支持。当使用移动或兼容性渲染方法时,此模式的行为类似于VISIBILITY_RANGE_FADE_DISABLED,但禁用了滞后。
VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_DEPENDENCIES = 2
将在达到自身可见性范围的极限时淡入其可见性依赖项(参见Item3D.visibility_parent)。这比VISIBILITY_RANGE_FADE_DISABLED慢,但它可以提供更平滑的转换。淡入范围由visibility_range_begin_margin和visibility_range_end_margin决定。
注意:仅在使用前进+渲染方法时受支持。当使用移动或兼容性渲染方法时,此模式的行为类似于VISIBILITY_RANGE_FADE_DISABLED,但禁用了滞后。
属性说明¶
ShadowCastingSetting cast_shadow = 1 🔗
void set_cast_shadows_setting(value: ShadowCastingSetting)
ShadowCastingSetting get_cast_shadows_setting()
选定的阴影投射标志。有关可能的值,请参见ShadowCastingSetting。
AABB custom_aabb = AABB(0, 0, 0, 0, 0, 0) 🔗
使用自定义边界框覆盖此节点的边界框。这可用于避免在骨架与MeshRender一起使用时发生的昂贵的AABB重新计算,或精确控制MeshRender的边界框。要使用默认AABB,请将值设置为AABB,并将所有字段设置为0.0。为避免截头体剔除,请将custom_aabb设置为覆盖整个应用世界的非常大的AABB,例如AABB(-10000,-10000,-10000,20000,20000,20000)。要禁用所有形式的剔除(包括遮挡剔除),请调用GeometryRender的RID上的RenderingServer.instance_set_ignore_culling()。
float extra_cull_margin = 0.0 🔗
添加到GeometryInstance3D的边界框(AABB)以增加其剔除框的额外距离。
LightmapScale gi_lightmap_scale = 0 🔗
void set_lightmap_scale(value: LightmapScale)
LightmapScale get_lightmap_scale()
已弃用: 请改用 gi_lightmap_texel_scale。
Lightmass中用于光照映射的纹理密度。
float gi_lightmap_texel_scale = 1.0 🔗
在Lightmass中用于光照贴图的纹理密度。更大的比例值在光照贴图中提供更高的分辨率,这可以为直接和间接光烘烤的光源带来更清晰的阴影。然而,更大的比例值也会增加光照贴图纹理中网格占用的空间,从而增加内存、存储和烘烤时间要求。当在不同比例下使用单个网格时,考虑调整此值以保持光照贴图纹理密度在网格之间保持一致。
例如,将gi_lightmap_texel_scale加倍会使该对象在每个轴上的光照贴图纹理分辨率加倍,因此它将四倍texel计数。
用于整个几何体体的全局照明模式。为避免结果不一致,请在运行时使用与网格目的相匹配的模式(静态/动态)。
注意:光源的烘烤模式也会影响全局照明渲染。见Light.light_bake_mode。
bool ignore_occlusion_culling = false 🔗
如果true,则禁用此实例的遮挡剔除。对于即使在使用遮挡剔除时也必须呈现的小发明很有用。
注意:ignore_occlusion_culling不影响截头体剔除(这是在给定摄像机角度的情况下物体不可见时发生的情况)。为了避免截头体剔除,请将custom_aabb设置为覆盖整个应用世界的非常大的AABB,例如AABB(-10000,-10000,-10000,20000,20000,20000)。
更改网格转换到较低详细级别的速度。值为0将强制网格到其最低详细级别,值为1将使用默认设置,较大的值将使网格在更远的距离保持较高的详细级别。
用于在编辑器中测试详细级别转换。
整个几何体体的材质叠加。
如果一个材质被分配到这个属性,它将被渲染在所有表面的任何其他活动材质之上。
整个几何体体的材质覆盖。
如果一个材质被分配到这个属性,它将被用来代替网格的任何材质槽中的任何材质集。
应用于整个几何体的透明度(作为材质现有透明度的乘数)。0.0是完全不透明的,而1.0是完全透明的。大于0.0(独占)的值将强制几何的材质通过透明管道,该管道渲染速度较慢,并且由于不正确的透明度排序可能会出现渲染问题。然而,与使用透明材质不同,将transparency设置为大于0.0(独占)的值将not禁用阴影渲染。
在空间着色器中,1.0-透明度被设置为内置ALPHA的默认值。
注意:transparency被夹在0.0和1.0之间,因此该属性不能用于使透明材质比原来更不透明。
注意:仅在使用Forward+渲染方法时受支持。当使用Mobile或Compatiity渲染方法时,transparency被忽略,并被视为始终为0.0。
float visibility_range_begin = 0.0 🔗
GeometryInstance3D可见的起始距离,同时考虑visibility_range_begin_margin。默认值0用于禁用范围检查。
float visibility_range_begin_margin = 0.0 🔗
visibility_range_begin阈值的边距。GeometryInstance3D只会在超过或低于visibility_range_begin阈值时更改其可见性状态。
如果visibility_range_fade_mode是VISIBILITY_RANGE_FADE_DISABLED,则这充当滞后距离。如果visibility_range_fade_mode是VISIBILITY_RANGE_FADE_SELF或VISIBILITY_RANGE_FADE_DEPENDENCIES,则这充当渐变过渡距离,并且必须设置为大于0.0的值才能显着效果。
float visibility_range_end = 0.0 🔗
GeometryInstance3D将被隐藏的距离,同时考虑visibility_range_end_margin。默认值0用于禁用范围检查。
float visibility_range_end_margin = 0.0 🔗
visibility_range_end阈值的边距。GeometryInstance3D只会在超过或低于visibility_range_end阈值时更改其可见性状态。
如果visibility_range_fade_mode是VISIBILITY_RANGE_FADE_DISABLED,则这充当滞后距离。如果visibility_range_fade_mode是VISIBILITY_RANGE_FADE_SELF或VISIBILITY_RANGE_FADE_DEPENDENCIES,则这充当渐变过渡距离,并且必须设置为大于0.0的值才能显着效果。
VisibilityRangeFadeMode visibility_range_fade_mode = 0 🔗
void set_visibility_range_fade_mode(value: VisibilityRangeFadeMode)
VisibilityRangeFadeMode get_visibility_range_fade_mode()
控制哪些实例在接近可见性范围的限制时将消失。有关可能的值,请参阅VisibilityRangeFadeMode。
方法说明¶
Variant get_instance_shader_parameter(name: StringName) const 🔗
获取在此实例上设置的着色器参数值。
void set_instance_shader_parameter(name: StringName, value: Variant) 🔗
仅为此实例设置着色器统一的值(每个实例统一)。另请参阅ShaderMaterial.set_shader_parameter()使用相同的ShaderMaterial在所有实例上分配统一。
注意:要在每个实例的基础上分配着色器统一,它必须在着色器代码中使用实例统一…而不是统一…来定义。
注意:name区分大小写,必须与代码中的uniform 名称完全匹配(而不是检查器中的大写名称)。
注意:每实例shader uniform仅适用于空间和CanvasItem着色器,但不适用于雾、天空或粒子着色器。