RenderingServer
继承: Object
任何可见的东西的服务器。
描述
渲染服务器是所有可见内容的 API 后端。整个场景系统都挂载在它上面来显示。渲染服务器是完全不透明的:内部实现完全取决于具体的实现,无法进行访问。
使用渲染服务器可以完全绕过场景和 Node 系统。如果场景系统是瓶颈所在,那么这样做就可以提升性能,否则无法提升性能(例如已经完全利用 GPU 的情况)。
资源是使用 *_create
函数创建的。这些函数返回的 RID 并不是对对象本身的引用,而是指向这些对象的不透明指针。
所有对象都会被绘制到视口中。你可以使用附加到 SceneTree 的 Viewport,或者也可以使用 viewport_create 自行创建。使用自定义场景或画布时,需要使用 viewport_set_scenario 或 viewport_attach_canvas 将场景或画布附加到视口。
场景:在 3D 中,所有可视对象都必须与一个场景(Scenario)相关联。场景是世界的可视化表示。如果要从正在运行的游戏中访问渲染服务器,那么就可以使用 Node3D.get_world_3d 从任何 Node3D 节点的场景树访问该场景。此外,也可以使用 scenario_create 创建场景。
在 2D 中也是类似的,需要一个画布(Canvas)来绘制所有的画布项。
3D:在 3D 中,所有可视对象都由资源(Resource)和实例(Instance)组成。资源可以是网格、粒子系统、灯光或任何其他 3D 对象。为了使资源可见,必须使用 instance_set_base 将其附加到一个实例。该实例还必须使用 instance_set_scenario 附加到场景中才可见。不带前缀的 RenderingServer 方法通常都是针对 3D 的(但也有例外)。
2D:在 2D 中,所有可见对象都是某种形式的画布项(Canvas Item)。为了使画布项可见,就需要让它成为附加到视口的画布的子项,或者需要让它成为其他画布项的子项,但这些画布项最终也需要是画布的子项。针对 2D 的 RenderingServer 方法一般都以 canvas_*
开头。
无头模式:使用 --headless
命令行参数启动引擎将禁用所有渲染和窗口管理功能。在这种情况下,RenderingServer 中的大多数函数将返回虚值。
教程
属性
方法
信号
frame_post_draw ( )
在该帧的结尾发出,此时 RenderingServer 刚刚完成对所有 Viewport 的更新。
frame_pre_draw ( )
在该帧的开头发出,此后 RenderingServer 会更新所有 Viewport。
枚举
enum TextureLayeredType:
TextureLayeredType TEXTURE_LAYERED_2D_ARRAY = 0
二维纹理数组(见 Texture2DArray)。
TextureLayeredType TEXTURE_LAYERED_CUBEMAP = 1
立方体贴图纹理(见 Cubemap)。
TextureLayeredType TEXTURE_LAYERED_CUBEMAP_ARRAY = 2
立方体贴图纹理数组(见 CubemapArray)。
enum CubeMapLayer:
CubeMapLayer CUBEMAP_LAYER_LEFT = 0
Cubemap 的左面。
CubeMapLayer CUBEMAP_LAYER_RIGHT = 1
Cubemap 的右面。
CubeMapLayer CUBEMAP_LAYER_BOTTOM = 2
Cubemap 的底面。
CubeMapLayer CUBEMAP_LAYER_TOP = 3
Cubemap 的顶面。
CubeMapLayer CUBEMAP_LAYER_FRONT = 4
Cubemap 的正面。
CubeMapLayer CUBEMAP_LAYER_BACK = 5
Cubemap 的背面。
enum ShaderMode:
ShaderMode SHADER_SPATIAL = 0
着色器是 3D 着色器。
ShaderMode SHADER_CANVAS_ITEM = 1
着色器是 2D 着色器。
ShaderMode SHADER_PARTICLES = 2
着色器是粒子着色器(2D 和 3D 均可使用)。
ShaderMode SHADER_SKY = 3
着色器是 3D 天空着色器。
ShaderMode SHADER_FOG = 4
着色器是 3D 雾着色器。
ShaderMode SHADER_MAX = 5
代表 ShaderMode 枚举的大小。
enum ArrayType:
ArrayType ARRAY_VERTEX = 0
数组是顶点位置数组。
ArrayType ARRAY_NORMAL = 1
数组是法线数组。
ArrayType ARRAY_TANGENT = 2
数组是切线数组。
ArrayType ARRAY_COLOR = 3
数组是顶点颜色数组。
ArrayType ARRAY_TEX_UV = 4
数组是 UV 坐标数组。
ArrayType ARRAY_TEX_UV2 = 5
数组是第二组 UV 坐标的 UV 坐标数组。
ArrayType ARRAY_CUSTOM0 = 6
数组是第一组自定义数据的自定义数据数组。
ArrayType ARRAY_CUSTOM1 = 7
数组是第二组自定义数据的自定义数据数组。
ArrayType ARRAY_CUSTOM2 = 8
数组是第三组自定义数据的自定义数据数组。
ArrayType ARRAY_CUSTOM3 = 9
数组是第四组自定义数据的自定义数据数组。
ArrayType ARRAY_BONES = 10
数组包含骨骼信息。
ArrayType ARRAY_WEIGHTS = 11
数组是重量信息。
ArrayType ARRAY_INDEX = 12
数组是索引数组。
ArrayType ARRAY_MAX = 13
代表 ArrayType 枚举的大小。
enum ArrayCustomFormat:
ArrayCustomFormat ARRAY_CUSTOM_RGBA8_UNORM = 0
自定义数据数组包含的是每通道 8 位的红、绿、蓝、Alpha 颜色数据。元素经过归一化,是 [0.0, 1.0]
范围内的无符号浮点数。
ArrayCustomFormat ARRAY_CUSTOM_RGBA8_SNORM = 1
自定义数据数组包含的是每通道 8 位的红、绿、蓝、Alpha 颜色数据。元素经过归一化,是 [0.0, 1.0]
范围内的带符号浮点数。
ArrayCustomFormat ARRAY_CUSTOM_RG_HALF = 2
自定义数据数组包含的是每通道 16 位的红、绿、蓝颜色数据。元素为半精度浮点数。
ArrayCustomFormat ARRAY_CUSTOM_RGBA_HALF = 3
自定义数据数组包含的是每通道 16 位的红、绿、蓝、Alpha 颜色数据。元素为半精度浮点数。
ArrayCustomFormat ARRAY_CUSTOM_R_FLOAT = 4
自定义数据数组包含的是每通道 32 位的红色数据。元素为单精度浮点数。
ArrayCustomFormat ARRAY_CUSTOM_RG_FLOAT = 5
自定义数据数组包含的是每通道 32 位的红、绿颜色数据。元素为单精度浮点数。
ArrayCustomFormat ARRAY_CUSTOM_RGB_FLOAT = 6
自定义数据数组包含的是每通道 32 位的红、绿、蓝颜色数据。元素为单精度浮点数。
ArrayCustomFormat ARRAY_CUSTOM_RGBA_FLOAT = 7
自定义数据数组包含的是每通道 32 位的红、绿、蓝、Alpha 颜色数据。元素为单精度浮点数。
ArrayCustomFormat ARRAY_CUSTOM_MAX = 8
代表 ArrayCustomFormat 枚举的大小。
flags ArrayFormat:
ArrayFormat ARRAY_FORMAT_VERTEX = 1
用于标记顶点位置数组的标志。
ArrayFormat ARRAY_FORMAT_NORMAL = 2
用于标记法线数组的标志。
ArrayFormat ARRAY_FORMAT_TANGENT = 4
用于标记切线数组的标志。
ArrayFormat ARRAY_FORMAT_COLOR = 8
用于标记顶点颜色数组的标志。
ArrayFormat ARRAY_FORMAT_TEX_UV = 16
用于标记 UV 坐标数组的标志。
ArrayFormat ARRAY_FORMAT_TEX_UV2 = 32
用于标记第二个 UV 坐标的 UV 坐标数组的标志。
ArrayFormat ARRAY_FORMAT_CUSTOM0 = 64
用于标记第一组自定义数据的自定义顶点数据数组的标志。
ArrayFormat ARRAY_FORMAT_CUSTOM1 = 128
用于标记第二组自定义数据的自定义顶点数据数组的标志。
ArrayFormat ARRAY_FORMAT_CUSTOM2 = 256
用于标记第三组自定义数据的自定义顶点数据数组的标志。
ArrayFormat ARRAY_FORMAT_CUSTOM3 = 512
用于标记第四组自定义数据的自定义顶点数据数组的标志。
ArrayFormat ARRAY_FORMAT_BONES = 1024
用来标记骨骼信息数组的标志。
ArrayFormat ARRAY_FORMAT_WEIGHTS = 2048
用于标记重量数组的标记。
ArrayFormat ARRAY_FORMAT_INDEX = 4096
用于标记索引数组的标志。
ArrayFormat ARRAY_FORMAT_BLEND_SHAPE_MASK = 7
ArrayFormat ARRAY_FORMAT_CUSTOM_BASE = 13
ArrayFormat ARRAY_FORMAT_CUSTOM_BITS = 3
ArrayFormat ARRAY_FORMAT_CUSTOM0_SHIFT = 13
ArrayFormat ARRAY_FORMAT_CUSTOM1_SHIFT = 16
ArrayFormat ARRAY_FORMAT_CUSTOM2_SHIFT = 19
ArrayFormat ARRAY_FORMAT_CUSTOM3_SHIFT = 22
ArrayFormat ARRAY_FORMAT_CUSTOM_MASK = 7
ArrayFormat ARRAY_COMPRESS_FLAGS_BASE = 25
ArrayFormat ARRAY_FLAG_USE_2D_VERTICES = 33554432
用于标记包含 2D 顶点的数组的标志。
ArrayFormat ARRAY_FLAG_USE_DYNAMIC_UPDATE = 67108864
ArrayFormat ARRAY_FLAG_USE_8_BONE_WEIGHTS = 134217728
用于标记数组使用 8 个骨骼权重而不是 4 个的标志。
ArrayFormat ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY = 268435456
用于标记网格没有顶点数组,而是使用索引和其他信息推断着色器中的顶点位置的标志。
ArrayFormat ARRAY_FLAG_COMPRESS_ATTRIBUTES = 536870912
用于标记网格正在使用的压缩的属性(顶点、法线、切线、UV)的标志。启用这种形式的压缩后,顶点位置将被打包到 RGBA16UNORM 属性中,并在顶点着色器中进行缩放。法线和切线将被打包到表示一个轴的 RG16UNORM 中,并在顶点的 A 通道中存储一个 16 位浮点数。UV 将使用 16 位标准化浮点数而不是完整的 32 位有符号浮点数。使用该压缩模式时,必须使用顶点、法线、和切线或仅使用顶点。你无法使用没有切线的法线。如果可以的话,导入器将自动启用这种压缩。
ArrayFormat ARRAY_FLAG_FORMAT_VERSION_BASE = 35
用于标记被用于存储网格版本的位的起始的标志。
ArrayFormat ARRAY_FLAG_FORMAT_VERSION_SHIFT = 35
用于移动网格格式 int,以将版本带入最低位的标志。
ArrayFormat ARRAY_FLAG_FORMAT_VERSION_1 = 0
用于记录版本引入之前先前网格版本所使用的格式的标志。
ArrayFormat ARRAY_FLAG_FORMAT_VERSION_2 = 34359738368
用于记录第二次迭代的网格版本标志的标志。该版本与 ARRAY_FLAG_FORMAT_VERSION_1 之间的主要区别在于,该版本支持 ARRAY_FLAG_COMPRESS_ATTRIBUTES,并且在该版本中,顶点位置与法线和切线去交错。
ArrayFormat ARRAY_FLAG_FORMAT_CURRENT_VERSION = 34359738368
用于记录引擎期望的当前版本的标志。目前这与 ARRAY_FLAG_FORMAT_VERSION_2 相同。
ArrayFormat ARRAY_FLAG_FORMAT_VERSION_MASK = 255
使用 ARRAY_FLAG_FORMAT_VERSION_SHIFT 将用于网格版本的位转移到位后,用于隔离这些位的标志。
enum PrimitiveType:
PrimitiveType PRIMITIVE_POINTS = 0
绘制的图元由点组成。
PrimitiveType PRIMITIVE_LINES = 1
绘制的图元由线组成。
PrimitiveType PRIMITIVE_LINE_STRIP = 2
绘制的图元由单条线带组成。
PrimitiveType PRIMITIVE_TRIANGLES = 3
绘制的图元由三角形组成。
PrimitiveType PRIMITIVE_TRIANGLE_STRIP = 4
绘制的图元由单条三角形带组成(最后 3 个顶点总是会构成三角形)。
PrimitiveType PRIMITIVE_MAX = 5
代表 PrimitiveType 枚举的大小。
enum BlendShapeMode:
BlendShapeMode BLEND_SHAPE_MODE_NORMALIZED = 0
混合形状是被归一化了的。
BlendShapeMode BLEND_SHAPE_MODE_RELATIVE = 1
混合形状是相对于基础的权重。
enum MultimeshTransformFormat:
MultimeshTransformFormat MULTIMESH_TRANSFORM_2D = 0
使用 Transform2D 存储 MultiMesh 变换。
MultimeshTransformFormat MULTIMESH_TRANSFORM_3D = 1
使用 Transform3D 存储 MultiMesh 变换。
enum LightProjectorFilter:
LightProjectorFilter LIGHT_PROJECTOR_FILTER_NEAREST = 0
光线投射器的最近邻过滤(用于像素风光线投射器)。渲染时不使用 mipmap,这意味着较远处的光线投射器看上去会很锐利,但会有颗粒状的图案。与使用 mipmap 的性能开销大致相同。
LightProjectorFilter LIGHT_PROJECTOR_FILTER_LINEAR = 1
光线投射器的线性过滤(用于非像素风光线投射器)。渲染时不使用 mipmap,这意味着较远处的光线投射器看上去会很平滑,但会有模糊的效果。与使用 mipmap 的性能开销大致相同。
LightProjectorFilter LIGHT_PROJECTOR_FILTER_NEAREST_MIPMAPS = 2
光线投射器的最近邻过滤(用于像素风光线投射器)。渲染时使用各向同性的 mipmap,这意味着较远处的光线投射器看上去会很平滑,但会有模糊的效果。与不使用 mipmap 的性能开销大致相同。
LightProjectorFilter LIGHT_PROJECTOR_FILTER_LINEAR_MIPMAPS = 3
光线投射器的线性过滤(用于非像素风光线投射器)。渲染时使用各向同性的 mipmap,这意味着较远处的光线投射器看上去会很平滑,但会有模糊的效果。与不使用 mipmap 的性能开销大致相同。
LightProjectorFilter LIGHT_PROJECTOR_FILTER_NEAREST_MIPMAPS_ANISOTROPIC = 4
光线投射器的最近邻过滤(用于像素风光线投射器)。渲染时使用各向异性的 mipmap,这意味着光线投射器从斜角度观察会既平滑又锐利。比各向同性的 mipmap 更好看,但也更慢。各向异性的级别由 ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level 定义。
LightProjectorFilter LIGHT_PROJECTOR_FILTER_LINEAR_MIPMAPS_ANISOTROPIC = 5
光线投射器的线性过滤(用于非像素风光线投射器)。渲染时使用各向异性的 mipmap,这意味着光线投射器从斜角度观察会既平滑又锐利。比各向同性的 mipmap 更好看,但也更慢。各向异性的级别由 ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level 定义。
enum LightType:
LightType LIGHT_DIRECTIONAL = 0
方向(太阳/月亮)灯(见 DirectionalLight3D)。
LightType LIGHT_OMNI = 1
全向灯(见 OmniLight3D)。
LightType LIGHT_SPOT = 2
聚光灯(见 SpotLight3D)。
enum LightParam:
LightParam LIGHT_PARAM_ENERGY = 0
该灯光的能量倍数。
LightParam LIGHT_PARAM_INDIRECT_ENERGY = 1
该灯光的间接能量倍数(最终的间接能量为 LIGHT_PARAM_ENERGY * LIGHT_PARAM_INDIRECT_ENERGY)。
LightParam LIGHT_PARAM_VOLUMETRIC_FOG_ENERGY = 2
该灯光的体积雾能量倍数(最终的体积雾能量为 LIGHT_PARAM_ENERGY * LIGHT_PARAM_VOLUMETRIC_FOG_ENERGY)。
LightParam LIGHT_PARAM_SPECULAR = 3
灯光对镜面反射的影响。
LightParam LIGHT_PARAM_RANGE = 4
灯光的范围。
LightParam LIGHT_PARAM_SIZE = 5
使用聚光灯或全向灯时的灯光大小。使用定向光时是光的角度大小。
LightParam LIGHT_PARAM_ATTENUATION = 6
光线的衰减。
LightParam LIGHT_PARAM_SPOT_ANGLE = 7
聚光灯的角度。
LightParam LIGHT_PARAM_SPOT_ATTENUATION = 8
聚光灯的衰减。
LightParam LIGHT_PARAM_SHADOW_MAX_DISTANCE = 9
阴影分割的最大距离。将这个值增大会让定向阴影在更远处可见,代价是整体的阴影细节降低和性能(因为渲染定向阴影时需要包含更多的物体)。
LightParam LIGHT_PARAM_SHADOW_SPLIT_1_OFFSET = 10
第一次拆分所占据的阴影图集的比例。
LightParam LIGHT_PARAM_SHADOW_SPLIT_2_OFFSET = 11
第二次拆分所占用的阴影图集的比例。
LightParam LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET = 12
第三次拆分所占用的阴影图集的比例。第四个拆分占据了其余部分。
LightParam LIGHT_PARAM_SHADOW_FADE_START = 13
阴影将开始淡出的阴影最大距离的比例。
LightParam LIGHT_PARAM_SHADOW_NORMAL_BIAS = 14
法线偏置,用于抵消物体法线的阴影查找。可以用来修复自阴影的伪影。
LightParam LIGHT_PARAM_SHADOW_BIAS = 15
对阴影查找进行偏置,以修复自我阴影的假象。
LightParam LIGHT_PARAM_SHADOW_PANCAKE_SIZE = 16
设置定向阴影圆斑的大小。该圆斑偏移了阴影的相机视锥体的起点,为阴影提供更高的有效深度分辨率。但是,较大的圆斑大小会导致靠近视锥体边缘的大型物体的阴影出现伪影。减少该圆斑的大小会有所帮助。将大小设置为 0
会关闭该圆斑效果。
LightParam LIGHT_PARAM_SHADOW_OPACITY = 17
灯光的阴影不透明度。低于 1.0
的值会使光线透过阴影出现。这可以用于以较低的性能成本伪造全局照明。
LightParam LIGHT_PARAM_SHADOW_BLUR = 18
模糊阴影的边缘。可用于隐藏低分辨率阴影贴图中的像素伪影。较高的值会使阴影显得粗糙,并可能导致其他不需要的伪影。尽量保持接近默认值。
LightParam LIGHT_PARAM_TRANSMITTANCE_BIAS = 19
LightParam LIGHT_PARAM_INTENSITY = 20
代表灯光强度的常量,SpotLight3D 和 OmniLight3D 的单位为流明,DirectionalLight3D 的单位为勒克斯。仅在 ProjectSettings.rendering/lights_and_shadows/use_physical_light_units 为 true
时使用。
LightParam LIGHT_PARAM_MAX = 21
代表 LightParam 枚举的大小。
enum LightBakeMode:
LightBakeMode LIGHT_BAKE_DISABLED = 0
烘焙时灯光将被忽略。这是最快的模式,但是在烘焙全局照明时仍会考虑该灯光。该模式通常应用于快速变化的动态灯光,因为全局照明的效果在这些灯光上不太明显。
LightBakeMode LIGHT_BAKE_STATIC = 1
在静态烘焙(VoxelGI、LightmapGI、SDFGI(Environment.sdfgi_enabled))时,考虑了灯光。灯光可以四处移动或修改,但其全局照明不会实时更新。这适用于细微的变化(例如闪烁的手电筒),但通常不适用于大的变化,例如打开和关闭灯光。
LightBakeMode LIGHT_BAKE_DYNAMIC = 2
动态烘焙时考虑灯光(仅 VoxelGI 和 SDFGI(Environment.sdfgi_enabled))。灯光可以四处移动或修改,全局照明会实时更新。灯光的全局照明效果与 LIGHT_BAKE_STATIC 略有不同。性能开销比 LIGHT_BAKE_STATIC 更大。使用 SDFGI 时,动态灯光的更新速度受 ProjectSettings.rendering/global_illumination/sdfgi/frames_to_update_lights 的影响。
enum LightOmniShadowMode:
LightOmniShadowMode LIGHT_OMNI_SHADOW_DUAL_PARABOLOID = 0
对全向光使用双抛物面阴影贴图。
LightOmniShadowMode LIGHT_OMNI_SHADOW_CUBE = 1
对全向光使用立方体贴图阴影贴图。比双抛物面更慢但质量更好。
enum LightDirectionalShadowMode:
LightDirectionalShadowMode LIGHT_DIRECTIONAL_SHADOW_ORTHOGONAL = 0
对平行光使用正交阴影投影。
LightDirectionalShadowMode LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS = 1
使用平行光时,使用 2 个分割进行阴影投影。
LightDirectionalShadowMode LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS = 2
使用平行光时,使用 4 个分割进行阴影投影。
enum LightDirectionalSkyMode:
LightDirectionalSkyMode LIGHT_DIRECTIONAL_SKY_MODE_LIGHT_AND_SKY = 0
在天空渲染和场景照明中都使用 DirectionalLight3D。
LightDirectionalSkyMode LIGHT_DIRECTIONAL_SKY_MODE_LIGHT_ONLY = 1
仅在场景照明中使用 DirectionalLight3D。
LightDirectionalSkyMode LIGHT_DIRECTIONAL_SKY_MODE_SKY_ONLY = 2
仅在天空渲染中使用 DirectionalLight3D。
enum ShadowQuality:
ShadowQuality SHADOW_QUALITY_HARD = 0
最低的阴影过滤质量(最快)。使用这种质量设置时,软阴影不可用,这意味着如果 Light3D.light_size 和 Light3D.light_angular_distance 为 0.0
,则会忽略 Light3D.shadow_blur 属性。
注意:使用硬阴影过滤时,由 Light3D.light_size 和 Light3D.light_angular_distance 执行的可变阴影模糊仍然有效。在这种情况下会考虑 Light3D.shadow_blur。但是不会对结果进行模糊处理,而是将模糊量视为半影的最大半径。
ShadowQuality SHADOW_QUALITY_SOFT_VERY_LOW = 1
非常低的阴影过滤质量(更快)。使用该质量设置时,Light3D.shadow_blur 会自动乘以 0.75 倍以避免引入过多的噪点。该划分仅适用于 Light3D.light_size 或 Light3D.light_angular_distance 为 0.0
的灯光。
ShadowQuality SHADOW_QUALITY_SOFT_LOW = 2
低阴影过滤质量(快速)。
ShadowQuality SHADOW_QUALITY_SOFT_MEDIUM = 3
中低阴影过滤质量(平均)。
ShadowQuality SHADOW_QUALITY_SOFT_HIGH = 4
高低阴影过滤质量(慢)。使用该质量设置时,Light3D.shadow_blur 会自动乘以 1.5 倍以更好地利用高样本数。这种增加的模糊还提高了动态对象阴影的稳定性。该乘数仅适用于 Light3D.light_size 或 Light3D.light_angular_distance 为 0.0
的灯光。
ShadowQuality SHADOW_QUALITY_SOFT_ULTRA = 5
最高的低阴影过滤质量(最慢)。使用该质量设置时,Light3D.shadow_blur 会自动乘以 2 倍以更好地利用高样本数。这种增加的模糊还提高了动态对象阴影的稳定性。该乘数仅适用于 Light3D.light_size 或 Light3D.light_angular_distance 为 0.0
的灯光。
ShadowQuality SHADOW_QUALITY_MAX = 6
代表 ShadowQuality 枚举的大小。
enum ReflectionProbeUpdateMode:
ReflectionProbeUpdateMode REFLECTION_PROBE_UPDATE_ONCE = 0
反射探针将更新一次反射,然后停止。
ReflectionProbeUpdateMode REFLECTION_PROBE_UPDATE_ALWAYS = 1
反射探针将每帧更新。这种模式对于捕捉移动物体是必要的。
enum ReflectionProbeAmbientMode:
ReflectionProbeAmbientMode REFLECTION_PROBE_AMBIENT_DISABLED = 0
不要在反射探针的区域内应用任何环境光,区域由探针的大小决定。
ReflectionProbeAmbientMode REFLECTION_PROBE_AMBIENT_ENVIRONMENT = 1
在反射探针的区域内应用自动来源的环境光照,区域由探针的大小决定。
ReflectionProbeAmbientMode REFLECTION_PROBE_AMBIENT_COLOR = 2
在反射探针的区域内应用自定义环境光,区域由探针的大小决定。见 reflection_probe_set_ambient_color 和 reflection_probe_set_ambient_energy。
enum DecalTexture:
DecalTexture DECAL_TEXTURE_ALBEDO = 0
贴花中的反照率纹理(Decal.texture_albedo)。
DecalTexture DECAL_TEXTURE_NORMAL = 1
贴花中的法线贴图纹理(Decal.texture_normal)。
DecalTexture DECAL_TEXTURE_ORM = 2
贴花中的遮蔽/粗糙度/金属性纹理(Decal.texture_orm)。
DecalTexture DECAL_TEXTURE_EMISSION = 3
贴花中的自发光纹理(Decal.texture_orm)。
DecalTexture DECAL_TEXTURE_MAX = 4
代表 DecalTexture 枚举的大小。
enum DecalFilter:
DecalFilter DECAL_FILTER_NEAREST = 0
贴花的最近邻过滤(用于像素风贴花)。渲染时不使用 mipmap,这意味着较远处的贴花看上去会很锐利,但会有颗粒状的图案。与使用 mipmap 的性能开销大致相同。
DecalFilter DECAL_FILTER_LINEAR = 1
贴花的线性过滤(用于非像素风贴花)。渲染时不使用 mipmap,这意味着较远处的贴花看上去会很平滑,但会有模糊的效果。与使用 mipmap 的性能开销大致相同。
DecalFilter DECAL_FILTER_NEAREST_MIPMAPS = 2
贴花的最近邻过滤(用于像素风贴花)。渲染时使用各向同性的 mipmap,这意味着较远处的贴花看上去会很平滑,但会有模糊的效果。与不使用 mipmap 的性能开销大致相同。
DecalFilter DECAL_FILTER_LINEAR_MIPMAPS = 3
贴花的线性过滤(用于非像素风贴花)。渲染时使用各向同性的 mipmap,这意味着较远处的贴花看上去会很平滑,但会有模糊的效果。与不使用 mipmap 的性能开销大致相同。
DecalFilter DECAL_FILTER_NEAREST_MIPMAPS_ANISOTROPIC = 4
贴花的最近邻过滤(用于像素风贴花)。渲染时使用各向异性的 mipmap,这意味着贴花从斜角度观察会既平滑又锐利。比各向同性的 mipmap 更好看,但也更慢。各向异性的级别由 ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level 定义。
DecalFilter DECAL_FILTER_LINEAR_MIPMAPS_ANISOTROPIC = 5
贴花的线性过滤(用于非像素风贴花)。渲染时使用各向异性的 mipmap,这意味着贴花从斜角度观察会既平滑又锐利。比各向同性的 mipmap 更好看,但也更慢。各向异性的级别由 ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level 定义。
enum VoxelGIQuality:
VoxelGIQuality VOXEL_GI_QUALITY_LOW = 0
VoxelGI 较低渲染质量,使用 4 个锥体。
VoxelGIQuality VOXEL_GI_QUALITY_HIGH = 1
VoxelGI 较高渲染质量,使用 6 个锥体。
enum ParticlesMode:
ParticlesMode PARTICLES_MODE_2D = 0
2D 粒子。
ParticlesMode PARTICLES_MODE_3D = 1
3D 粒子。
enum ParticlesTransformAlign:
ParticlesTransformAlign PARTICLES_TRANSFORM_ALIGN_DISABLED = 0
ParticlesTransformAlign PARTICLES_TRANSFORM_ALIGN_Z_BILLBOARD = 1
ParticlesTransformAlign PARTICLES_TRANSFORM_ALIGN_Y_TO_VELOCITY = 2
ParticlesTransformAlign PARTICLES_TRANSFORM_ALIGN_Z_BILLBOARD_Y_TO_VELOCITY = 3
enum ParticlesDrawOrder:
ParticlesDrawOrder PARTICLES_DRAW_ORDER_INDEX = 0
按照粒子数组中出现的顺序绘制粒子。
ParticlesDrawOrder PARTICLES_DRAW_ORDER_LIFETIME = 1
根据粒子的寿命对其进行排序。换句话说,寿命最长的粒子被绘制在前面。
ParticlesDrawOrder PARTICLES_DRAW_ORDER_REVERSE_LIFETIME = 2
根据粒子寿命的倒数对粒子进行排序。换句话说,寿命最短的粒子被绘制在前面。
ParticlesDrawOrder PARTICLES_DRAW_ORDER_VIEW_DEPTH = 3
根据粒子与相机的距离对其进行排序。
enum ParticlesCollisionType:
ParticlesCollisionType PARTICLES_COLLISION_TYPE_SPHERE_ATTRACT = 0
ParticlesCollisionType PARTICLES_COLLISION_TYPE_BOX_ATTRACT = 1
ParticlesCollisionType PARTICLES_COLLISION_TYPE_VECTOR_FIELD_ATTRACT = 2
ParticlesCollisionType PARTICLES_COLLISION_TYPE_SPHERE_COLLIDE = 3
ParticlesCollisionType PARTICLES_COLLISION_TYPE_BOX_COLLIDE = 4
ParticlesCollisionType PARTICLES_COLLISION_TYPE_SDF_COLLIDE = 5
ParticlesCollisionType PARTICLES_COLLISION_TYPE_HEIGHTFIELD_COLLIDE = 6
enum ParticlesCollisionHeightfieldResolution:
ParticlesCollisionHeightfieldResolution PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_256 = 0
ParticlesCollisionHeightfieldResolution PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_512 = 1
ParticlesCollisionHeightfieldResolution PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_1024 = 2
ParticlesCollisionHeightfieldResolution PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_2048 = 3
ParticlesCollisionHeightfieldResolution PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_4096 = 4
ParticlesCollisionHeightfieldResolution PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_8192 = 5
ParticlesCollisionHeightfieldResolution PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_MAX = 6
代表 ParticlesCollisionHeightfieldResolution 枚举的大小。
enum FogVolumeShape:
FogVolumeShape FOG_VOLUME_SHAPE_ELLIPSOID = 0
FogVolume 的形状类似于一个椭球体(拉伸的球体)。
FogVolumeShape FOG_VOLUME_SHAPE_CONE = 1
FogVolume 的形状像一个向上的圆锥体(在局部坐标中)。圆锥体的角度会自动被设置以填充大小。锥体将被调整以适合大小。旋转 FogVolume 节点以重新定向圆锥体。不支持通过大小进行非均匀缩放(改为缩放 FogVolume 节点)。
FogVolumeShape FOG_VOLUME_SHAPE_CYLINDER = 2
FogVolume 的形状将像一个直立的圆柱体(在局部坐标中)。旋转 FogVolume 节点以重新定向圆柱体。圆柱体将被调整以适合大小。不支持通过大小进行非均匀缩放(改为缩放 FogVolume 节点)。
FogVolumeShape FOG_VOLUME_SHAPE_BOX = 3
FogVolume 的形状会像一个盒子。
FogVolumeShape FOG_VOLUME_SHAPE_WORLD = 4
FogVolume 将没有形状,将覆盖整个世界并且不会被剔除。
FogVolumeShape FOG_VOLUME_SHAPE_MAX = 5
代表 FogVolumeShape 枚举的大小。
enum ViewportScaling3DMode:
ViewportScaling3DMode VIEWPORT_SCALING_3D_MODE_BILINEAR = 0
对视口的 3D 缓冲区使用双线性缩放。可以使用 Viewport.scaling_3d_scale 设置缩放量。小于 1.0
的值将导致欠采样,而大于 1.0
的值将导致超采样。1.0
的值将禁用缩放。
ViewportScaling3DMode VIEWPORT_SCALING_3D_MODE_FSR = 1
对视口的 3D 缓冲区使用 AMD FidelityFX 超分辨率 1.0 放大。可以使用 Viewport.scaling_3d_scale 设置缩放量。小于 1.0
的值将导致使用 FSR 放大视口。不支持大于 1.0
的值,将改用双线性降采样。1.0
的值将禁用缩放。
ViewportScaling3DMode VIEWPORT_SCALING_3D_MODE_FSR2 = 2
对视口的 3D 缓冲区使用 AMD FidelityFX 超分辨率 2.2 放大。可以使用 Viewport.scaling_3d_scale 设置缩放量。小于 1.0
的值将导致使用 FSR2 放大视口。不支持大于 1.0
的值,将改用双线性降采样。1.0
的值将使用原生分辨率下的 FSR2 作为 TAA 解决方案。
ViewportScaling3DMode VIEWPORT_SCALING_3D_MODE_MAX = 3
代表 ViewportScaling3DMode 枚举的大小。
enum ViewportUpdateMode:
ViewportUpdateMode VIEWPORT_UPDATE_DISABLED = 0
不要更新视口的渲染目标。
ViewportUpdateMode VIEWPORT_UPDATE_ONCE = 1
更新一次视口的渲染目标,然后切换到 VIEWPORT_UPDATE_DISABLED。
ViewportUpdateMode VIEWPORT_UPDATE_WHEN_VISIBLE = 2
仅在渲染目标可见时更新视口的渲染目标。这是默认值。
ViewportUpdateMode VIEWPORT_UPDATE_WHEN_PARENT_VISIBLE = 3
仅在其父级可见时更新视口的渲染目标。
ViewportUpdateMode VIEWPORT_UPDATE_ALWAYS = 4
始终更新视口的渲染目标。
enum ViewportClearMode:
ViewportClearMode VIEWPORT_CLEAR_ALWAYS = 0
绘制前始终清除视口的渲染目标。
ViewportClearMode VIEWPORT_CLEAR_NEVER = 1
永不清除视口的渲染目标。
ViewportClearMode VIEWPORT_CLEAR_ONLY_NEXT_FRAME = 2
在下一帧清除视口的渲染目标,然后切换到 VIEWPORT_CLEAR_NEVER。
enum ViewportEnvironmentMode:
ViewportEnvironmentMode VIEWPORT_ENVIRONMENT_DISABLED = 0
禁用在 2D 画布上渲染 3D 环境。
ViewportEnvironmentMode VIEWPORT_ENVIRONMENT_ENABLED = 1
启用在 2D 画布上渲染 3D 环境。
ViewportEnvironmentMode VIEWPORT_ENVIRONMENT_INHERIT = 2
从父级继承启用/禁用值。如果最顶层的父级也被设置为 VIEWPORT_ENVIRONMENT_INHERIT,那么与 VIEWPORT_ENVIRONMENT_ENABLED 的行为相同。
ViewportEnvironmentMode VIEWPORT_ENVIRONMENT_MAX = 3
代表 ViewportEnvironmentMode 枚举的大小。
enum ViewportSDFOversize:
ViewportSDFOversize VIEWPORT_SDF_OVERSIZE_100_PERCENT = 0
不使用过大的 2D 带符号距离场。遮挡器可能在接触视口边缘时消失,GPUParticles3D 碰撞也可能比预期更早地停止工作。对 GPU 的要求最低。
ViewportSDFOversize VIEWPORT_SDF_OVERSIZE_120_PERCENT = 1
2D 带符号距离场在每个方向(上、右、下、左)都覆盖超出视口大小 20% 的范围。
ViewportSDFOversize VIEWPORT_SDF_OVERSIZE_150_PERCENT = 2
2D 带符号距离场在每个方向(上、右、下、左)都覆盖超出视口大小 50% 的范围。
ViewportSDFOversize VIEWPORT_SDF_OVERSIZE_200_PERCENT = 3
2D 带符号距离场在每个方向(上、右、下、左)都覆盖超出视口大小 100% 的范围。对 GPU 的要求最高。
ViewportSDFOversize VIEWPORT_SDF_OVERSIZE_MAX = 4
代表 ViewportSDFOversize 枚举的大小。
enum ViewportSDFScale:
ViewportSDFScale VIEWPORT_SDF_SCALE_100_PERCENT = 0
全分辨率 2D 带符号距离场缩放。对 GPU 的要求最高。
ViewportSDFScale VIEWPORT_SDF_SCALE_50_PERCENT = 1
各轴半分辨率 2D 带符号距离场缩放(视口像素数的 25%)。
ViewportSDFScale VIEWPORT_SDF_SCALE_25_PERCENT = 2
各轴四分之一分辨率 2D 带符号距离场缩放(视口像素数的 6.25%)。对 GPU 的要求最低。
ViewportSDFScale VIEWPORT_SDF_SCALE_MAX = 3
代表 ViewportSDFScale 枚举的大小。
enum ViewportMSAA:
ViewportMSAA VIEWPORT_MSAA_DISABLED = 0
用于 3D 的多重采样抗锯齿被禁用。这是默认值,也是最快的设置。
ViewportMSAA VIEWPORT_MSAA_2X = 1
用于 3D 的多重采样抗锯齿,使用每个像素 2 个样本。这对性能有中等影响。
ViewportMSAA VIEWPORT_MSAA_4X = 2
用于 3D 的多重采样抗锯齿,使用每个像素 4 个样本。这对性能有较大影响。
ViewportMSAA VIEWPORT_MSAA_8X = 3
用于 3D 的多重采样抗锯齿,使用每个像素 8 个样本。这对性能有非常大的影响。可能在低端和较旧的硬件上不受支持。
ViewportMSAA VIEWPORT_MSAA_MAX = 4
代表 ViewportMSAA 枚举的大小。
enum ViewportScreenSpaceAA:
ViewportScreenSpaceAA VIEWPORT_SCREEN_SPACE_AA_DISABLED = 0
不要在全屏后处理中执行抗锯齿。
ViewportScreenSpaceAA VIEWPORT_SCREEN_SPACE_AA_FXAA = 1
使用快速近似抗锯齿(Fast Approximate Anti-Aliasing)。FXAA 是一种流行的屏幕空间抗锯齿方法,速度很快,但会让图像变模糊,使用较低分辨率时尤为显著。1440p 和 4K 等较高分辨率下效果仍然不错。
ViewportScreenSpaceAA VIEWPORT_SCREEN_SPACE_AA_MAX = 2
代表 ViewportScreenSpaceAA 枚举的大小。
enum ViewportOcclusionCullingBuildQuality:
ViewportOcclusionCullingBuildQuality VIEWPORT_OCCLUSION_BUILD_QUALITY_LOW = 0
较低的遮挡剔除 BVH 构建质量(由 Embree 定义)。CPU 占用最低,但剔除效率最低。
ViewportOcclusionCullingBuildQuality VIEWPORT_OCCLUSION_BUILD_QUALITY_MEDIUM = 1
中等的遮挡剔除 BVH 构建质量(由 Embree 定义)。
ViewportOcclusionCullingBuildQuality VIEWPORT_OCCLUSION_BUILD_QUALITY_HIGH = 2
较高的遮挡剔除 BVH 构建质量(由 Embree 定义)。CPU 占用最高,但剔除效率最高。
enum ViewportRenderInfo:
ViewportRenderInfo VIEWPORT_RENDER_INFO_OBJECTS_IN_FRAME = 0
在单帧中绘制的对象的数量。
ViewportRenderInfo VIEWPORT_RENDER_INFO_PRIMITIVES_IN_FRAME = 1
在单帧中绘制的点、线、三角形的数量。
ViewportRenderInfo VIEWPORT_RENDER_INFO_DRAW_CALLS_IN_FRAME = 2
此帧期间的绘制调用数。
ViewportRenderInfo VIEWPORT_RENDER_INFO_MAX = 3
代表 ViewportRenderInfo 枚举的大小。
enum ViewportRenderInfoType:
ViewportRenderInfoType VIEWPORT_RENDER_INFO_TYPE_VISIBLE = 0
可见渲染阶段(不含阴影)。
ViewportRenderInfoType VIEWPORT_RENDER_INFO_TYPE_SHADOW = 1
阴影渲染阶段。根据开启了阴影的灯光数以及方向阴影的拆分数,同一个对象可能会渲染多次。
ViewportRenderInfoType VIEWPORT_RENDER_INFO_TYPE_MAX = 2
代表 ViewportRenderInfoType 枚举的大小。
enum ViewportDebugDraw:
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_DISABLED = 0
调试绘制被禁用。默认设置。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_UNSHADED = 1
显示的对象没有光照信息。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_LIGHTING = 2
仅使用光照信息显示对象。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_OVERDRAW = 3
对象通过加法混合显示为半透明,因此可以看到它们在彼此之上绘制的位置。更高的过度绘制(由更亮的颜色表示)意味着在绘制隐藏在其他像素后面的像素时浪费了性能。
注意:使用该调试绘制模式时,自定义着色器将被忽略。这意味着顶点置换不再可见。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_WIREFRAME = 4
调试绘制,将对象用线框形式绘制。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_NORMAL_BUFFER = 5
绘制法线缓冲区而不是常规场景,因此可以看到将由后处理效果使用的每像素法线。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_VOXEL_GI_ALBEDO = 6
仅使用来自 VoxelGI 的反照率值显示对象。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_VOXEL_GI_LIGHTING = 7
仅使用来自 VoxelGI 的照明值显示对象。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_VOXEL_GI_EMISSION = 8
仅使用来自 VoxelGI 的自发光颜色显示对象。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_SHADOW_ATLAS = 9
在 Viewport 的左上象限中绘制存储来自 OmniLight3D 和 SpotLight3D 的阴影的阴影图集。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_DIRECTIONAL_SHADOW_ATLAS = 10
绘制阴影图集,该阴影图集存储 Viewport 左上象限中 DirectionalLight3D 的阴影。
与阴影贴图级联相关的相机视锥体切片被叠加以可视化覆盖范围。每个切片的颜色与 VIEWPORT_DEBUG_DRAW_PSSM_SPLITS 使用的颜色匹配。当混合阴影级联时,绘制视锥体切片时会考虑重叠。
最后一个级联显示了所有视锥体切片,以说明所有切片的覆盖范围。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_SCENE_LUMINANCE = 11
绘制估计的场景亮度。这是一个 1×1 的纹理,启用自动曝光时生成,用于控制场景的曝光。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_SSAO = 12
绘制屏幕空间环境光遮蔽纹理而不是场景,以便可以清楚地看到它是如何影响对象的。为了使这种显示模式起作用,必须在 WorldEnvironment 中设置 Environment.ssao_enabled。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_SSIL = 13
绘制屏幕空间间接照明纹理而不是场景,以便可以清楚地看到它是如何影响对象的。为了使这种显示模式起作用,必须在 WorldEnvironment 中设置 Environment.ssil_enabled。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_PSSM_SPLITS = 14
为场景中的 DirectionalLight3D 的每个 PSSM 分割着色不同的颜色,以便可以看到分割的位置。它们将按顺序被着色为红色、绿色、蓝色、黄色。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_DECAL_ATLAS = 15
绘制贴花图集,图集中保存的是各个 Decal 中的贴花纹理。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_SDFGI = 16
绘制 SDFGI 级联数据。这是用于反弹灯光、创建反射的数据结构。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_SDFGI_PROBES = 17
绘制 SDFGI 探针数据。这是用于为场景中移动的动态对象提供间接光照的数据结构。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_GI_BUFFER = 18
绘制全局光照缓冲(VoxelGI 或 SDFGI)。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_DISABLE_LOD = 19
禁用网格 LOD。所有网格都会使用完整细节绘制,可以用来比较性能。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_CLUSTER_OMNI_LIGHTS = 20
绘制 OmniLight3D 集群。集群决定屏幕空间中灯光的放置位置,能够让引擎在进行光照时仅对屏幕的部分区域进行处理。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_CLUSTER_SPOT_LIGHTS = 21
绘制 SpotLight3D 集群。集群决定屏幕空间中灯光的放置位置,能够让引擎在进行光照时仅对屏幕的部分区域进行处理。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_CLUSTER_DECALS = 22
绘制 Decal 集群。集群决定屏幕空间中贴花的放置位置,能够让引擎在进行贴花时仅对屏幕的部分区域进行处理。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_CLUSTER_REFLECTION_PROBES = 23
绘制 ReflectionProbe 集群。集群决定屏幕空间中反射探针的放置位置,能够让引擎在处理反射探针时仅对屏幕的部分区域进行处理。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_OCCLUDERS = 24
绘制遮挡剔除缓冲。这个低分辨率遮挡剔除缓冲在 CPU 栅格化,可用于检查实例是否被其他对象遮挡。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_MOTION_VECTORS = 25
绘制运动向量缓冲。由时间抗锯齿使用,能够修正在游戏过程中发生的运动。
ViewportDebugDraw VIEWPORT_DEBUG_DRAW_INTERNAL_BUFFER = 26
绘制内部缓冲区而不是常规场景,因此可以看到将被后处理效果使用的每像素输出。
enum ViewportVRSMode:
ViewportVRSMode VIEWPORT_VRS_DISABLED = 0
可变速率着色已禁用。
ViewportVRSMode VIEWPORT_VRS_TEXTURE = 1
可变速率着色使用纹理。请注意,对于立体视觉,请使用为每个视图提供纹理的纹理图集。
ViewportVRSMode VIEWPORT_VRS_XR = 2
可变速率着色纹理由主 XRInterface 提供。
ViewportVRSMode VIEWPORT_VRS_MAX = 3
代表 ViewportVRSMode 枚举的大小。
enum SkyMode:
SkyMode SKY_MODE_AUTOMATIC = 0
根据天空着色器自动选择合适的处理模式。如果着色器使用 TIME
或 POSITION
,则会使用 SKY_MODE_REALTIME。如果着色器使用任何 LIGHT_*
变量或任何自定义 uniform,则会使用 SKY_MODE_INCREMENTAL。否则默认为 SKY_MODE_QUALITY。
SkyMode SKY_MODE_QUALITY = 1
使用高质量重要性采样处理辐射度贴图。得到的结果通常比 SKY_MODE_REALTIME 的质量更高,但需要花费更多的时间来生成。如果你计划在运行时修改天空,则不应使用。如果你发现反射不够模糊,出现了火花或者萤火虫,请尝试增大 ProjectSettings.rendering/reflections/sky_reflections/ggx_samples。
SkyMode SKY_MODE_INCREMENTAL = 2
使用与 SKY_MODE_QUALITY 相同的高质量重要性采样来处理辐射度贴图,但更新会占用若干帧。帧数由 ProjectSettings.rendering/reflections/sky_reflections/roughness_layers 决定。当需要最高质量的辐射度贴图,但天空更新缓慢时,请使用该选项。
SkyMode SKY_MODE_REALTIME = 3
使用快速过滤算法处理辐照度贴图。一般来说,这会导致质量降低,但运行时间会大大加快。如果需要更好的质量,但仍需要每帧更新天空,请考虑开启 ProjectSettings.rendering/reflections/sky_reflections/fast_filter_high_quality。
注意:快速过滤算法被限制为 256x256 立方体贴图,因此 sky_set_radiance_size 必须被设置为 256
。否则会打印警告并忽略对辐照度大小的覆盖。
enum EnvironmentBG:
EnvironmentBG ENV_BG_CLEAR_COLOR = 0
用透明的颜色作为背景。
EnvironmentBG ENV_BG_COLOR = 1
使用指定的颜色作为背景。
EnvironmentBG ENV_BG_SKY = 2
使用天空资源作为背景。
EnvironmentBG ENV_BG_CANVAS = 3
使用一个指定的画布层作为背景。这对在 3D 世界中实例化一个 2D 场景很有用。
EnvironmentBG ENV_BG_KEEP = 4
不要清除背景,使用上一帧渲染的东西作为背景。
EnvironmentBG ENV_BG_CAMERA_FEED = 5
在背景中显示相机源。
EnvironmentBG ENV_BG_MAX = 6
代表 EnvironmentBG 枚举的大小。
enum EnvironmentAmbientSource:
EnvironmentAmbientSource ENV_AMBIENT_SOURCE_BG = 0
从指定为背景的任何来源收集环境光。
EnvironmentAmbientSource ENV_AMBIENT_SOURCE_DISABLED = 1
禁用环境光。
EnvironmentAmbientSource ENV_AMBIENT_SOURCE_COLOR = 2
为环境光指定特定的 Color。
EnvironmentAmbientSource ENV_AMBIENT_SOURCE_SKY = 3
无论背景如何,都从 Sky 收集环境光。
enum EnvironmentReflectionSource:
EnvironmentReflectionSource ENV_REFLECTION_SOURCE_BG = 0
使用背景进行反射。
EnvironmentReflectionSource ENV_REFLECTION_SOURCE_DISABLED = 1
禁用反射。
EnvironmentReflectionSource ENV_REFLECTION_SOURCE_SKY = 2
无论背景如何,都使用 Sky 进行反射。
enum EnvironmentGlowBlendMode:
EnvironmentGlowBlendMode ENV_GLOW_BLEND_MODE_ADDITIVE = 0
添加辉光混合模式。主要用于粒子、辉光(泛光)、镜头眩光、亮源。
EnvironmentGlowBlendMode ENV_GLOW_BLEND_MODE_SCREEN = 1
滤色辉光混合模式。增加亮度,经常与泛光一起使用。
EnvironmentGlowBlendMode ENV_GLOW_BLEND_MODE_SOFTLIGHT = 2
柔光辉光混合模式。修改对比度,曝光阴影和高光(高质量泛光)。
EnvironmentGlowBlendMode ENV_GLOW_BLEND_MODE_REPLACE = 3
替换辉光混合模式。用辉光值替换所有像素的颜色。这可以通过调整辉光参数来模拟全屏模糊效果,使其与原始图像的亮度相匹配。
EnvironmentGlowBlendMode ENV_GLOW_BLEND_MODE_MIX = 4
将辉光与底层颜色混合,以避免在保持辉光效果的同时,尽可能多地增加亮度。
enum EnvironmentToneMapper:
EnvironmentToneMapper ENV_TONE_MAPPER_LINEAR = 0
按照输入原样输出颜色。较亮的光照会导致过曝、输出的颜色中会有可见的截断。
EnvironmentToneMapper ENV_TONE_MAPPER_REINHARD = 1
使用 Reinhard 色调映射器。对渲染后的像素颜色进行调整,使用的是这个公式:color = color / (1 + color)
。可以避免对高光的截断,但最终的图像可能看上去有些寡淡。
EnvironmentToneMapper ENV_TONE_MAPPER_FILMIC = 2
使用电影级色调映射器。可以避免对高光的截断,最终的图像一般比 ENV_TONE_MAPPER_REINHARD 看上去更鲜艳。
EnvironmentToneMapper ENV_TONE_MAPPER_ACES = 3
使用Academy 颜色编码系统色调映射器。ACES 比其他选项稍贵一些,但它通过在光线变亮时对其进行去饱和处理,以更逼真的方式处理明亮的光线。与 ENV_TONE_MAPPER_REINHARD 和 ENV_TONE_MAPPER_FILMIC 相比,ACES 通常具有对比度更高的输出。
注意:这个色调映射运算符在 Godot 3.x 中被称为“ACES Fitted”。
enum EnvironmentSSRRoughnessQuality:
EnvironmentSSRRoughnessQuality ENV_SSR_ROUGHNESS_QUALITY_DISABLED = 0
用于屏幕空间反射的最低质量粗糙度过滤。与光滑(非粗糙)材质相比,粗糙材质不会有更模糊的屏幕空间反射。这是最快的选项。
EnvironmentSSRRoughnessQuality ENV_SSR_ROUGHNESS_QUALITY_LOW = 1
屏幕空间反射的较低质量粗糙度过滤器。
EnvironmentSSRRoughnessQuality ENV_SSR_ROUGHNESS_QUALITY_MEDIUM = 2
屏幕空间反射的中等质量粗糙度过滤器。
EnvironmentSSRRoughnessQuality ENV_SSR_ROUGHNESS_QUALITY_HIGH = 3
屏幕空间反射的较高质量粗糙度过滤器。这是最慢的选项。
enum EnvironmentSSAOQuality:
EnvironmentSSAOQuality ENV_SSAO_QUALITY_VERY_LOW = 0
最低质量的屏幕空间环境光遮蔽。
EnvironmentSSAOQuality ENV_SSAO_QUALITY_LOW = 1
低质量的屏幕空间环境光遮蔽。
EnvironmentSSAOQuality ENV_SSAO_QUALITY_MEDIUM = 2
中等质量的屏幕空间环境光遮蔽。
EnvironmentSSAOQuality ENV_SSAO_QUALITY_HIGH = 3
高质量的屏幕空间环境光遮蔽。
EnvironmentSSAOQuality ENV_SSAO_QUALITY_ULTRA = 4
最高质量的屏幕空间环境光遮蔽。使用可动态调整的自适应目标设置,以平滑地平衡性能和视觉质量。
enum EnvironmentSSILQuality:
EnvironmentSSILQuality ENV_SSIL_QUALITY_VERY_LOW = 0
最低质量的屏幕空间间接光照。
EnvironmentSSILQuality ENV_SSIL_QUALITY_LOW = 1
较低质量的屏幕空间间接光照。
EnvironmentSSILQuality ENV_SSIL_QUALITY_MEDIUM = 2
较高质量的屏幕空间间接光照。
EnvironmentSSILQuality ENV_SSIL_QUALITY_HIGH = 3
较高质量的屏幕空间间接光照。
EnvironmentSSILQuality ENV_SSIL_QUALITY_ULTRA = 4
最高质量的屏幕空间间接光照。使用可动态调整的自适应目标设置,以平滑地平衡性能和视觉质量。
enum EnvironmentSDFGIYScale:
EnvironmentSDFGIYScale ENV_SDFGI_Y_SCALE_50_PERCENT = 0
在 Y(垂直)轴上对 SDFGI 使用 50% 的缩放。SDFGI 单元格将比它们的宽度短两倍。这允许提供更多的 GI 细节,并减少薄地板和天花板的漏光。这通常是垂直度不高的场景的最佳选择。
EnvironmentSDFGIYScale ENV_SDFGI_Y_SCALE_75_PERCENT = 1
在 Y(垂直)轴上为 SDFGI 使用 75% 的缩放。这是 50% 和 100% SDFGI Y 缩放之间的平衡。
EnvironmentSDFGIYScale ENV_SDFGI_Y_SCALE_100_PERCENT = 2
在 Y(垂直)轴上为 SDFGI 使用 100% 的缩放。SDFGI 单元格将与宽度一样高。这通常是高度垂直场景的最佳选择。不利之处在于,薄地板和天花板可能会导致漏光更加明显。
enum EnvironmentSDFGIRayCount:
EnvironmentSDFGIRayCount ENV_SDFGI_RAY_COUNT_4 = 0
聚合 SDFGI 时每帧发出 4 条光线。对 GPU 的要求最低,但结果中噪点最多。
EnvironmentSDFGIRayCount ENV_SDFGI_RAY_COUNT_8 = 1
聚合 SDFGI 时每帧发出 8 条光线。
EnvironmentSDFGIRayCount ENV_SDFGI_RAY_COUNT_16 = 2
聚合 SDFGI 时每帧发出 16 条光线。
EnvironmentSDFGIRayCount ENV_SDFGI_RAY_COUNT_32 = 3
聚合 SDFGI 时每帧发出 32 条光线。
EnvironmentSDFGIRayCount ENV_SDFGI_RAY_COUNT_64 = 4
聚合 SDFGI 时每帧发出 64 条光线。
EnvironmentSDFGIRayCount ENV_SDFGI_RAY_COUNT_96 = 5
聚合 SDFGI 时每帧发出 96 条光线。对 GPU 的要求较高。
EnvironmentSDFGIRayCount ENV_SDFGI_RAY_COUNT_128 = 6
聚合 SDFGI 时每帧发出 128 条光线。对 GPU 的要求非常高,但结果中噪点最少。
EnvironmentSDFGIRayCount ENV_SDFGI_RAY_COUNT_MAX = 7
代表 EnvironmentSDFGIRayCount 枚举的大小。
enum EnvironmentSDFGIFramesToConverge:
EnvironmentSDFGIFramesToConverge ENV_SDFGI_CONVERGE_IN_5_FRAMES = 0
通过 5 帧聚合 SDFGI。响应最快,但光线数量一定时,结果中噪点最多。
EnvironmentSDFGIFramesToConverge ENV_SDFGI_CONVERGE_IN_10_FRAMES = 1
让 SDFGI 通过 10 帧完成聚合。
EnvironmentSDFGIFramesToConverge ENV_SDFGI_CONVERGE_IN_15_FRAMES = 2
让 SDFGI 通过 15 帧完成聚合。
EnvironmentSDFGIFramesToConverge ENV_SDFGI_CONVERGE_IN_20_FRAMES = 3
让 SDFGI 通过 20 帧完成聚合。
EnvironmentSDFGIFramesToConverge ENV_SDFGI_CONVERGE_IN_25_FRAMES = 4
让 SDFGI 通过 25 帧完成聚合。
EnvironmentSDFGIFramesToConverge ENV_SDFGI_CONVERGE_IN_30_FRAMES = 5
让 SDFGI 通过 30 帧完成聚合。响应最慢,但光线数量一定时,结果中噪点最少。
EnvironmentSDFGIFramesToConverge ENV_SDFGI_CONVERGE_MAX = 6
代表 EnvironmentSDFGIFramesToConverge 枚举的大小。
enum EnvironmentSDFGIFramesToUpdateLight:
EnvironmentSDFGIFramesToUpdateLight ENV_SDFGI_UPDATE_LIGHT_IN_1_FRAME = 0
通过 1 帧更新 SDFGI 中动态灯光的间接光照。响应最快,但对 GPU 的要求最高。
EnvironmentSDFGIFramesToUpdateLight ENV_SDFGI_UPDATE_LIGHT_IN_2_FRAMES = 1
通过 2 帧更新 SDFGI 中动态灯光的间接光照。
EnvironmentSDFGIFramesToUpdateLight ENV_SDFGI_UPDATE_LIGHT_IN_4_FRAMES = 2
通过 4 帧更新 SDFGI 中动态灯光的间接光照。
EnvironmentSDFGIFramesToUpdateLight ENV_SDFGI_UPDATE_LIGHT_IN_8_FRAMES = 3
通过 8 帧更新 SDFGI 中动态灯光的间接光照。
EnvironmentSDFGIFramesToUpdateLight ENV_SDFGI_UPDATE_LIGHT_IN_16_FRAMES = 4
通过 16 帧更新 SDFGI 中动态灯光的间接光照。响应最慢,但对 GPU 的要求最低。
EnvironmentSDFGIFramesToUpdateLight ENV_SDFGI_UPDATE_LIGHT_MAX = 5
代表 EnvironmentSDFGIFramesToUpdateLight 枚举的大小。
enum SubSurfaceScatteringQuality:
SubSurfaceScatteringQuality SUB_SURFACE_SCATTERING_QUALITY_DISABLED = 0
完全禁用次表面散射,即便材质的 BaseMaterial3D.subsurf_scatter_enabled 为 true
。对 GPU 的要求最低。
SubSurfaceScatteringQuality SUB_SURFACE_SCATTERING_QUALITY_LOW = 1
较低质量的次表面散射。
SubSurfaceScatteringQuality SUB_SURFACE_SCATTERING_QUALITY_MEDIUM = 2
中等质量的次表面散射。
SubSurfaceScatteringQuality SUB_SURFACE_SCATTERING_QUALITY_HIGH = 3
较高质量的次表面散射。对 GPU 的要求最高。
enum DOFBokehShape:
DOFBokehShape DOF_BOKEH_BOX = 0
使用一个盒式过滤计算 DOF 模糊。最快的选项,但会在模糊图案中产生明显的线条。
DOFBokehShape DOF_BOKEH_HEXAGON = 1
使用一个六边形过滤计算 DOF 模糊。
DOFBokehShape DOF_BOKEH_CIRCLE = 2
使用一个圆形过滤计算 DOF 模糊。最好的质量和最真实的,但最慢的。仅用于可以将大量性能专用于后期处理的区域(例如过场动画)。
enum DOFBlurQuality:
DOFBlurQuality DOF_BLUR_QUALITY_VERY_LOW = 0
最低质量的 DOF 模糊。这是最快的设置,但你可能会看到不自然的过滤。
DOFBlurQuality DOF_BLUR_QUALITY_LOW = 1
较低质量的 DOF 模糊。
DOFBlurQuality DOF_BLUR_QUALITY_MEDIUM = 2
中等质量的 DOF 模糊。
DOFBlurQuality DOF_BLUR_QUALITY_HIGH = 3
最高质量的 DOF 模糊。通过采集最多的样本,产生最平滑的模糊效果,但速度也明显变慢。
enum InstanceType:
InstanceType INSTANCE_NONE = 0
实例没有类型。
InstanceType INSTANCE_MESH = 1
该实例是网格。
InstanceType INSTANCE_MULTIMESH = 2
该实例是一个 multimesh。
InstanceType INSTANCE_PARTICLES = 3
该实例是粒子发射器。
InstanceType INSTANCE_PARTICLES_COLLISION = 4
该实例是 GPUParticles 碰撞形状。
InstanceType INSTANCE_LIGHT = 5
该实例是灯。
InstanceType INSTANCE_REFLECTION_PROBE = 6
该实例是反射探针。
InstanceType INSTANCE_DECAL = 7
该实例是贴花。
InstanceType INSTANCE_VOXEL_GI = 8
该实例是 VoxelGI。
InstanceType INSTANCE_LIGHTMAP = 9
该实例是光照贴图。
InstanceType INSTANCE_OCCLUDER = 10
该实例是遮挡剔除遮挡器。
InstanceType INSTANCE_VISIBLITY_NOTIFIER = 11
该实例是屏幕可见通知器。
InstanceType INSTANCE_FOG_VOLUME = 12
该实例是雾体积。
InstanceType INSTANCE_MAX = 13
代表 InstanceType 枚举的大小。
InstanceType INSTANCE_GEOMETRY_MASK = 14
几何体实例(网格、多网格、即时和粒子)的标志的组合。
enum InstanceFlags:
InstanceFlags INSTANCE_FLAG_USE_BAKED_LIGHT = 0
允许在烘焙照明中使用实例。
InstanceFlags INSTANCE_FLAG_USE_DYNAMIC_GI = 1
允许在动态全局光照中使用该实例。
InstanceFlags INSTANCE_FLAG_DRAW_NEXT_FRAME_IF_VISIBLE = 2
当设置时,手动请求在下一帧绘制几何图形。
InstanceFlags INSTANCE_FLAG_IGNORE_OCCLUSION_CULLING = 3
始终绘制,即便实例能够被遮挡剔除剔除。不影响视锥剔除。
InstanceFlags INSTANCE_FLAG_MAX = 4
代表 InstanceFlags 枚举的大小。
enum ShadowCastingSetting:
ShadowCastingSetting SHADOW_CASTING_SETTING_OFF = 0
禁用这个实例的阴影。
ShadowCastingSetting SHADOW_CASTING_SETTING_ON = 1
从此实例投下阴影。
ShadowCastingSetting SHADOW_CASTING_SETTING_DOUBLE_SIDED = 2
在渲染对象的阴影时禁用背面剔除。这会稍微慢一些,但可能会产生更正确的阴影。
ShadowCastingSetting SHADOW_CASTING_SETTING_SHADOWS_ONLY = 3
仅渲染对象的阴影。对象本身不会被绘制。
enum VisibilityRangeFadeMode:
VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_DISABLED = 0
禁用给定实例的可见性范围淡出。
VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_SELF = 1
当给定实例接近其可见范围限制时淡出该给定实例。
VisibilityRangeFadeMode VISIBILITY_RANGE_FADE_DEPENDENCIES = 2
当达到其可见性范围限制时淡入给定实例的依赖项。
enum BakeChannels:
BakeChannels BAKE_CHANNEL_ALBEDO_ALPHA = 0
bake_render_uv2 返回的 Image 数组中 Image 的索引。图像使用 Image.FORMAT_RGBA8 格式,并在 .rgb
通道中包含反照率颜色,在 .a
通道中包含 Alpha。
BakeChannels BAKE_CHANNEL_NORMAL = 1
bake_render_uv2 返回的 Image 数组中 Image 的索引。图像使用 Image.FORMAT_RGBA8 格式,并在 .rgb
通道中包含该对象的每像素法线,在 .a
通道中不包含任何内容。每像素法线被编码为 normal * 0.5 + 0.5
。
BakeChannels BAKE_CHANNEL_ORM = 2
bake_render_uv2 返回的 Image 数组中 Image 的索引。图像使用 Image.FORMAT_RGBA8 格式,并在 .r
通道中包含环境光遮挡(仅来自材质和贴花),在 .g
通道中包含粗糙度,在 .b
通道中包含金属度,并且中 .a
通道中包含次表面散射量。
BakeChannels BAKE_CHANNEL_EMISSION = 3
bake_render_uv2 返回的 Image 数组中 Image 的索引。图像使用 Image.FORMAT_RGBAH 格式,并在 .rgb
通道中包含自发光颜色,在 .a
通道中不包含任何内容。
enum CanvasTextureChannel:
CanvasTextureChannel CANVAS_TEXTURE_CHANNEL_DIFFUSE = 0
漫反射画布纹理(CanvasTexture.diffuse_texture)。
CanvasTextureChannel CANVAS_TEXTURE_CHANNEL_NORMAL = 1
法线贴图画布纹理(CanvasTexture.normal_texture)。
CanvasTextureChannel CANVAS_TEXTURE_CHANNEL_SPECULAR = 2
高光贴图画布纹理(CanvasTexture.specular_texture)。
enum NinePatchAxisMode:
NinePatchAxisMode NINE_PATCH_STRETCH = 0
九宫格在需要的地方被拉伸。
NinePatchAxisMode NINE_PATCH_TILE = 1
九宫格在需要的地方填充图块。
NinePatchAxisMode NINE_PATCH_TILE_FIT = 2
九宫格在需要的地方填充图块,并在需要时将它们拉伸一点。
enum CanvasItemTextureFilter:
CanvasItemTextureFilter CANVAS_ITEM_TEXTURE_FILTER_DEFAULT = 0
为 Viewport 使用默认过滤模式。
CanvasItemTextureFilter CANVAS_ITEM_TEXTURE_FILTER_NEAREST = 1
纹理过滤仅从最近的像素读取。这使得纹理从近距离看是像素化的,从远处看是颗粒状的(由于多级渐远纹理没有被采样)。
CanvasItemTextureFilter CANVAS_ITEM_TEXTURE_FILTER_LINEAR = 2
纹理过滤在最近的 4 个像素之间进行混合。这使得纹理从近处看起来很平滑,从远处看起来却有颗粒感(由于多级渐远纹理没有被采样)。
CanvasItemTextureFilter CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS = 3
纹理过滤从最近的像素读取并在最近的 2 个多级渐远纹理之间进行混合(或者如果 ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter 为 true
,则使用最近的多级渐远纹理)。这使得纹理从近处看起来像素化,从远处看起来平滑。
将此用于可能以低缩放查看的非像素艺术纹理(例如,由于 Camera2D 缩放或精灵缩放),因为多级渐远纹理对于平滑小于屏幕像素的像素很重要。
CanvasItemTextureFilter CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS = 4
纹理过滤在最近的 4 个像素和最近的 2 个多级渐远纹理之间进行混合(或者如果 ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter 为 true
,则使用最近的多级渐远纹理)。这使得纹理从近处看起来平滑,从远处看起来也平滑。
将此用于可能以低缩放查看的非像素艺术纹理(例如,由于 Camera2D 缩放或精灵缩放),因为多级渐远纹理对于平滑小于屏幕像素的像素很重要。
CanvasItemTextureFilter CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC = 5
纹理过滤从最近的像素读取并根据表面和相机视图之间的角度在 2 个多级渐远纹理之间进行混合(或者如果 ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter 为 true
,则使用最近的多级渐远纹理)。这使得纹理从近处看起来像素化,从远处看起来平滑。各向异性过滤提高了几乎与相机位于一条线的表面上的纹理质量,但速度稍慢。各向异性过滤级别可以通过调整 ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level 来改变。
注意:该纹理过滤在 2D 项目中很少有用。CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS 在这种情况下通常更合适。
CanvasItemTextureFilter CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC = 6
纹理过滤在最近的 4 个像素之间进行混合,并基于表面与相机视图之间的角度在 2 个多级渐远纹理之间进行混合(或者如果 ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter 为 true
,则使用最近的多级渐远纹理)。这使得纹理从近处看起来平滑,从远处看起来也平滑。各向异性过滤提高了几乎与相机位于一条线的表面上的纹理质量,但速度稍慢。各向异性过滤级别可以通过调整 ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level 来改变。
注意:该纹理过滤在 2D 项目中很少有用。CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS 在这种情况下通常更合适。
CanvasItemTextureFilter CANVAS_ITEM_TEXTURE_FILTER_MAX = 7
CanvasItemTextureFilter 枚举的最大值。
enum CanvasItemTextureRepeat:
CanvasItemTextureRepeat CANVAS_ITEM_TEXTURE_REPEAT_DEFAULT = 0
为 Viewport 使用默认重复模式。
CanvasItemTextureRepeat CANVAS_ITEM_TEXTURE_REPEAT_DISABLED = 1
禁用纹理重复。相反,当读取 0-1 范围之外的 UV 时,该值将被钳制在纹理的边缘,从而导致纹理的边界看起来被拉长。
CanvasItemTextureRepeat CANVAS_ITEM_TEXTURE_REPEAT_ENABLED = 2
当 UV 坐标超出 0-1 范围时,使纹理能够重复。如果使用其中一种线性过滤模式,则当采样器过滤纹理边缘时,这可能会导致纹理边缘出现伪影。
CanvasItemTextureRepeat CANVAS_ITEM_TEXTURE_REPEAT_MIRROR = 3
重复时翻转该纹理,使边缘对齐而不是突然改变。
CanvasItemTextureRepeat CANVAS_ITEM_TEXTURE_REPEAT_MAX = 4
CanvasItemTextureRepeat 枚举的最大值。
enum CanvasGroupMode:
CanvasGroupMode CANVAS_GROUP_MODE_DISABLED = 0
子级绘制在父级之上,不会被裁剪。
CanvasGroupMode CANVAS_GROUP_MODE_CLIP_ONLY = 1
父级仅用于裁剪目的。子级被裁剪到父级的可见区域,不绘制父级。
CanvasGroupMode CANVAS_GROUP_MODE_CLIP_AND_DRAW = 2
父级用于裁剪子级,但在将子级剪裁到其可见区域之前,父级也像往常一样绘制在子级下方。
CanvasGroupMode CANVAS_GROUP_MODE_TRANSPARENT = 3
enum CanvasLightMode:
CanvasLightMode CANVAS_LIGHT_MODE_POINT = 0
2D 点光(见 PointLight2D)。
CanvasLightMode CANVAS_LIGHT_MODE_DIRECTIONAL = 1
2D 方向(日月)光(见 DirectionalLight2D)。
enum CanvasLightBlendMode:
CanvasLightBlendMode CANVAS_LIGHT_BLEND_MODE_ADD = 0
向画布添加浅色。
CanvasLightBlendMode CANVAS_LIGHT_BLEND_MODE_SUB = 1
从画布中减去浅色。
CanvasLightBlendMode CANVAS_LIGHT_BLEND_MODE_MIX = 2
灯光根据透明度增加颜色。
enum CanvasLightShadowFilter:
CanvasLightShadowFilter CANVAS_LIGHT_FILTER_NONE = 0
不要对画布上的光影应用滤镜。
CanvasLightShadowFilter CANVAS_LIGHT_FILTER_PCF5 = 1
使用 PCF5 过滤法来过滤画布的光影。
CanvasLightShadowFilter CANVAS_LIGHT_FILTER_PCF13 = 2
使用 PCF13 过滤法来过滤画布的光影。
CanvasLightShadowFilter CANVAS_LIGHT_FILTER_MAX = 3
CanvasLightShadowFilter 枚举的最大值。
enum CanvasOccluderPolygonCullMode:
CanvasOccluderPolygonCullMode CANVAS_OCCLUDER_POLYGON_CULL_DISABLED = 0
禁用画布遮挡物的剔除。
CanvasOccluderPolygonCullMode CANVAS_OCCLUDER_POLYGON_CULL_CLOCKWISE = 1
画布遮挡器的剔除是顺时针的。
CanvasOccluderPolygonCullMode CANVAS_OCCLUDER_POLYGON_CULL_COUNTER_CLOCKWISE = 2
画布遮挡物的剔除是逆时针的。
enum GlobalShaderParameterType:
GlobalShaderParameterType GLOBAL_VAR_TYPE_BOOL = 0
布尔型全局着色器参数(global uniform bool ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_BVEC2 = 1
二维布尔向量全局着色器参数(global uniform bvec2 ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_BVEC3 = 2
三维布尔向量全局着色器参数(global uniform bvec3 ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_BVEC4 = 3
四维布尔向量全局着色器参数(global uniform bvec4 ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_INT = 4
整数全局着色器参数(global uniform int ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_IVEC2 = 5
二维整数向量全局着色器参数(global uniform ivec2 ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_IVEC3 = 6
三维整数向量全局着色器参数(global uniform ivec3 ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_IVEC4 = 7
四维整数向量全局着色器参数(global uniform ivec4 ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_RECT2I = 8
二维整数矩形全局着色器参数(global uniform ivec4 ...
)。等价于着色器代码中的 GLOBAL_VAR_TYPE_IVEC4,但在编辑器 UI 中以 Rect2i 的形式暴露。
GlobalShaderParameterType GLOBAL_VAR_TYPE_UINT = 9
无符号整数全局着色器参数(global uniform uint ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_UVEC2 = 10
二维无符号整数向量全局着色器参数(global uniform uvec2 ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_UVEC3 = 11
三维无符号整数向量全局着色器参数(global uniform uvec3 ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_UVEC4 = 12
四维无符号整数向量全局着色器参数(global uniform uvec4 ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_FLOAT = 13
单精度浮点数全局着色器参数(global uniform float ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_VEC2 = 14
二维单精度浮点数向量全局着色器参数(global uniform vec2 ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_VEC3 = 15
三维单精度浮点数向量全局着色器参数(global uniform vec3 ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_VEC4 = 16
四维单精度浮点数向量全局着色器参数(global uniform vec4 ...
)。
GlobalShaderParameterType GLOBAL_VAR_TYPE_COLOR = 17
颜色全局着色器参数(global uniform vec4 ...
)。等价于着色器代码中的 GLOBAL_VAR_TYPE_VEC4,但在编辑器 UI 中以 Color 的形式暴露。
GlobalShaderParameterType GLOBAL_VAR_TYPE_RECT2 = 18
二维浮点数矩形全局着色器参数(global uniform vec4 ...
)。等价于着色器代码中的 GLOBAL_VAR_TYPE_VEC4,但在编辑器 UI 中以 Rect2 的形式暴露。
GlobalShaderParameterType GLOBAL_VAR_TYPE_MAT2 = 19
2×2 矩阵全局着色器参数(global uniform mat2 ...
)。编辑器 UI 中以 PackedInt32Array 的形式暴露。
GlobalShaderParameterType GLOBAL_VAR_TYPE_MAT3 = 20
3×3 矩阵全局着色器参数(global uniform mat3 ...
)。编辑器 UI 中以 Basis 的形式暴露。
GlobalShaderParameterType GLOBAL_VAR_TYPE_MAT4 = 21
4×4 矩阵全局着色器参数(global uniform mat4 ...
)。编辑器 UI 中以 Projection 的形式暴露。
GlobalShaderParameterType GLOBAL_VAR_TYPE_TRANSFORM_2D = 22
二维变换全局着色器参数(global uniform mat2x3 ...
)。编辑器 UI 中以 Transform2D 的形式暴露。
GlobalShaderParameterType GLOBAL_VAR_TYPE_TRANSFORM = 23
三维变换全局着色器参数(global uniform mat3x4 ...
)。编辑器 UI 中以 Transform3D 的形式暴露。
GlobalShaderParameterType GLOBAL_VAR_TYPE_SAMPLER2D = 24
2D 采样器全局着色器参数(global uniform sampler2D ...
)。编辑器 UI 中以 Texture2D 的形式暴露。
GlobalShaderParameterType GLOBAL_VAR_TYPE_SAMPLER2DARRAY = 25
2D 采样器数组全局着色器参数(global uniform sampler2DArray ...
)。编辑器 UI 中以 Texture2DArray 的形式暴露。
GlobalShaderParameterType GLOBAL_VAR_TYPE_SAMPLER3D = 26
3D 采样器全局着色器参数(global uniform sampler3D ...
)。编辑器 UI 中以 Texture3D 的形式暴露。
GlobalShaderParameterType GLOBAL_VAR_TYPE_SAMPLERCUBE = 27
立方体贴图全局着色器参数(global uniform samplerCube ...
)。编辑器 UI 中以 Cubemap 的形式暴露。
GlobalShaderParameterType GLOBAL_VAR_TYPE_MAX = 28
代表 GlobalShaderParameterType 枚举的大小。
enum RenderingInfo:
RenderingInfo RENDERING_INFO_TOTAL_OBJECTS_IN_FRAME = 0
在当前 3D 场景中渲染的对象数。会根据相机的位置和旋转的不同而不同。
RenderingInfo RENDERING_INFO_TOTAL_PRIMITIVES_IN_FRAME = 1
在当前 3D 场景中渲染的点、线、三角的数量。会根据相机的位置和旋转的不同而不同。
RenderingInfo RENDERING_INFO_TOTAL_DRAW_CALLS_IN_FRAME = 2
在当前 3D 场景中渲染执行的绘制调用的数量。会根据相机的位置和旋转的不同而不同。
RenderingInfo RENDERING_INFO_TEXTURE_MEM_USED = 3
纹理内存的使用量(单位为字节)。
RenderingInfo RENDERING_INFO_BUFFER_MEM_USED = 4
缓冲内存的使用量(单位为字节)。包括顶点数据、uniform 缓冲以及内部使用的各种不同缓冲类型。
RenderingInfo RENDERING_INFO_VIDEO_MEM_USED = 5
显存的使用量(单位为字节)。使用 Forward+ 或移动渲染后端时,始终比 RENDERING_INFO_TEXTURE_MEM_USED 与 RENDERING_INFO_BUFFER_MEM_USED 的总和要大,因为这两项之外还有一些杂项数据。使用 GL Compatibility 后端时,等于 RENDERING_INFO_TEXTURE_MEM_USED 与 RENDERING_INFO_BUFFER_MEM_USED 之和。
enum Features:
Features FEATURE_SHADERS = 0
硬件支持着色器。这个枚举目前在 Godot 3.x 中没有使用。
Features FEATURE_MULTITHREADED = 1
硬件支持多线程。这个枚举目前在 Godot 3.x 中没有使用。
常量
NO_INDEX_ARRAY = -1
标记一个错误,表明索引数组为空。
ARRAY_WEIGHTS_SIZE = 4
每个顶点的权重/骨骼数。
CANVAS_ITEM_Z_MIN = -4096
画布项目的最小 Z 层。
CANVAS_ITEM_Z_MAX = 4096
帆布项目的最大 Z 层。
MAX_GLOW_LEVELS = 7
辉光后期处理效果使用的最大辉光级别数。
MAX_CURSORS = 8
已废弃。这个常量未在内部使用。
MAX_2D_DIRECTIONAL_LIGHTS = 8
2D 中同一时间能够渲染的最大方向光的数量。
MATERIAL_RENDER_PRIORITY_MIN = -128
所有材质的最小渲染优先级。
MATERIAL_RENDER_PRIORITY_MAX = 127
所有材质的最大渲染优先级。
ARRAY_CUSTOM_COUNT = 4
可用自定义数据数组的数量(ARRAY_CUSTOM0、ARRAY_CUSTOM1、ARRAY_CUSTOM2、ARRAY_CUSTOM3)。
PARTICLES_EMIT_FLAG_POSITION = 1
PARTICLES_EMIT_FLAG_ROTATION_SCALE = 2
PARTICLES_EMIT_FLAG_VELOCITY = 4
PARTICLES_EMIT_FLAG_COLOR = 8
PARTICLES_EMIT_FLAG_CUSTOM = 16
属性说明
bool render_loop_enabled
如果为 false
,则完全禁用渲染,但引擎逻辑仍在处理中。即使禁用渲染,你也可以调用 force_draw 来绘制帧。
方法说明
Image[] bake_render_uv2 ( RID base, RID[] material_overrides, Vector2i image_size )
使用可选的 material_overrides
,将 base
参数中传递的 Mesh 的材质数据,烘焙为一组大小为 image_size
的 Image。返回包含 BakeChannels 中指定的材质属性的 Image 数组。
void call_on_render_thread ( Callable callable )
由于 RenderingServer 实际逻辑可能在单独的线程上运行,因此从主(或任何其他)线程访问其内部将导致错误。为了更轻松地运行可以安全访问渲染内部的代码(例如 RenderingDevice 和类似的 RD 类),请通过该函数推送一个可调用对象,以便它将在渲染线程上执行。
RID camera_attributes_create ( )
创建相机属性对象并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 camera_attributes_
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价资源为 CameraAttributes。
void camera_attributes_set_auto_exposure ( RID camera_attributes, bool enable, float min_sensitivity, float max_sensitivity, float speed, float scale )
设置用于自动曝光效果的参数。这些参数与 CameraAttributes 和 CameraAttributesPractical 中的对应参数具有相同的含义。
void camera_attributes_set_dof_blur ( RID camera_attributes, bool far_enable, float far_distance, float far_transition, bool near_enable, float near_distance, float near_transition, float amount )
设置用于 DOF 模糊效果的参数。这些参数与 CameraAttributesPractical 中的对应参数具有相同的含义。
void camera_attributes_set_dof_blur_bokeh_shape ( DOFBokehShape shape )
设置 DOF 散景图案的形状。可以使用不同的形状来达到艺术效果,或达到性能目标。有关可用选项的更多详细信息,请参阅 DOFBokehShape。
void camera_attributes_set_dof_blur_quality ( DOFBlurQuality quality, bool use_jitter )
将 DOF 模糊效果的质量级别设置为 DOFBlurQuality 中的选项之一。use_jitter
可用于抖动模糊过程中采集的样本,以隐藏伪影,代价是看起来更模糊。
void camera_attributes_set_exposure ( RID camera_attributes, float multiplier, float normalization )
设置渲染器所使用的曝光值。归一化量用于将给定的曝光值(Exposure Value,EV)烘焙进渲染计算,从而降低场景的动态范围。
可以用如下方法根据曝光值(EV100)来计算归一化系数:
func get_exposure_normalization(float ev100):
return 1.0 / (pow(2.0, ev100) * 1.2)
可以使用如下方法根据光圈(单位为 F 值)、快门速度(单位为秒)、感光度(单位为 ISO)来计算曝光值:
func get_exposure(float aperture, float shutter_speed, float sensitivity):
return log2((aperture * aperture) / shutterSpeed * (100.0 / sensitivity))
RID camera_create ( )
创建 3D 相机并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 camera_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价节点为 Camera3D。
void camera_set_camera_attributes ( RID camera, RID effects )
将使用 camera_attributes_create 创建的 camera_attributes 设置给给定的相机。
void camera_set_cull_mask ( RID camera, int layers )
设置与该相机关联的剔除掩码。剔除掩码描述了该相机渲染了哪些 3D 图层。相当于 Camera3D.cull_mask。
void camera_set_environment ( RID camera, RID env )
设置该相机使用的环境。相当于 Camera3D.environment。
void camera_set_frustum ( RID camera, float size, Vector2 offset, float z_near, float z_far )
将相机设置为使用视锥投影。该模式允许调整 offset
参数以创建“倾斜视锥”效果。
void camera_set_orthogonal ( RID camera, float size, float z_near, float z_far )
将相机设置为使用正交投影,也称为正射投影。物体在屏幕上保持相同的尺寸,无论它们有多远。
void camera_set_perspective ( RID camera, float fovy_degrees, float z_near, float z_far )
将相机设置为使用透视投影。屏幕上的物体在远处时变得更小。
void camera_set_transform ( RID camera, Transform3D transform )
设置相机的 Transform3D。
void camera_set_use_vertical_aspect ( RID camera, bool enable )
如果为 true
,则保留水平长宽比,相当于 Camera3D.KEEP_WIDTH。如果为 false
,则保留垂直长宽比,相当于 Camera3D.KEEP_HEIGHT。
RID canvas_create ( )
创建画布并返回分配的 RID。可以通过返回的 RID 进行访问。这个 RID 会在所有 canvas_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
void canvas_item_add_animation_slice ( RID item, float animation_length, float slice_begin, float slice_end, float offset=0.0 )
后续的绘制命令将被忽略,除非它们位于指定的动画切片内。这是实现在背景上循环而不是不断重绘的动画的更快方法。
void canvas_item_add_circle ( RID item, Vector2 pos, float radius, Color color )
在 item
RID 指向的 CanvasItem 上绘制一个圆圈。另见 CanvasItem.draw_circle。
void canvas_item_add_clip_ignore ( RID item, bool ignore )
如果 ignore
为 true
,则忽略使用该画布项绘制的项目的裁剪,直到将 ignore
设置为 false 时再次调用。
void canvas_item_add_lcd_texture_rect_region ( RID item, Rect2 rect, RID texture, Rect2 src_rect, Color modulate )
另见 CanvasItem.draw_lcd_texture_rect_region。
void canvas_item_add_line ( RID item, Vector2 from, Vector2 to, Color color, float width=-1.0, bool antialiased=false )
在 item
RID 指向的 CanvasItem 上画一条线。另见 CanvasItem.draw_line。
void canvas_item_add_mesh ( RID item, RID mesh, Transform2D transform=Transform2D(1, 0, 0, 1, 0, 0), Color modulate=Color(1, 1, 1, 1), RID texture=RID() )
使用给定的 transform
、modulate
颜色、和 texture
绘制使用 mesh_create 创建的网格。这由 MeshInstance2D 内部使用。
void canvas_item_add_msdf_texture_rect_region ( RID item, Rect2 rect, RID texture, Rect2 src_rect, Color modulate=Color(1, 1, 1, 1), int outline_size=0, float px_range=1.0, float scale=1.0 )
另见 CanvasItem.draw_msdf_texture_rect_region。
void canvas_item_add_multiline ( RID item, PackedVector2Array points, PackedColorArray colors, float width=-1.0 )
在 item
RID 指向的 CanvasItem 上,绘制一个 2D 多线。另见 CanvasItem.draw_multiline 和 CanvasItem.draw_multiline_colors。
void canvas_item_add_multimesh ( RID item, RID mesh, RID texture=RID() )
在 item
RID 指向的 CanvasItem 上,绘制一个 2D MultiMesh。另见 CanvasItem.draw_multimesh。
void canvas_item_add_nine_patch ( RID item, Rect2 rect, Rect2 source, RID texture, Vector2 topleft, Vector2 bottomright, NinePatchAxisMode x_axis_mode=0, NinePatchAxisMode y_axis_mode=0, bool draw_center=true, Color modulate=Color(1, 1, 1, 1) )
在 item
RID 指向的 CanvasItem 上,绘制一个九宫格矩形。
void canvas_item_add_particles ( RID item, RID particles, RID texture )
在 item
RID 指向的 CanvasItem 上绘制粒子。
void canvas_item_add_polygon ( RID item, PackedVector2Array points, PackedColorArray colors, PackedVector2Array uvs=PackedVector2Array(), RID texture=RID() )
在 item
RID 指向的 CanvasItem 上绘制一个 2D 多边形。如果你需要更加灵活的设置(例如能够使用骨骼),请改用 canvas_item_add_triangle_array。另见 CanvasItem.draw_polygon。
void canvas_item_add_polyline ( RID item, PackedVector2Array points, PackedColorArray colors, float width=-1.0, bool antialiased=false )
在 item
RID 指向的 CanvasItem 上,绘制一个 2D 折线。另见 CanvasItem.draw_polyline 和 CanvasItem.draw_polyline_colors。
void canvas_item_add_primitive ( RID item, PackedVector2Array points, PackedColorArray colors, PackedVector2Array uvs, RID texture )
在 item
RID 指向的 CanvasItem 上绘制一个 2D 图元。另见 CanvasItem.draw_primitive。
void canvas_item_add_rect ( RID item, Rect2 rect, Color color )
在 item
RID 指向的 CanvasItem 上绘制一个矩形。另见 CanvasItem.draw_rect。
void canvas_item_add_set_transform ( RID item, Transform2D transform )
设置将被用于变换后续画布项命令的 Transform2D。
void canvas_item_add_texture_rect ( RID item, Rect2 rect, RID texture, bool tile=false, Color modulate=Color(1, 1, 1, 1), bool transpose=false )
在 item
RID 指向的 CanvasItem 上绘制一个有纹理的 2D 矩形。另见 CanvasItem.draw_texture_rect 和 Texture2D.draw_rect。
void canvas_item_add_texture_rect_region ( RID item, Rect2 rect, RID texture, Rect2 src_rect, Color modulate=Color(1, 1, 1, 1), bool transpose=false, bool clip_uv=true )
在 item
RID 指向的 CanvasItem 上绘制一个有纹理 2D 矩形的特定区域。另见 CanvasItem.draw_texture_rect_region 和 Texture2D.draw_rect_region。
void canvas_item_add_triangle_array ( RID item, PackedInt32Array indices, PackedVector2Array points, PackedColorArray colors, PackedVector2Array uvs=PackedVector2Array(), PackedInt32Array bones=PackedInt32Array(), PackedFloat32Array weights=PackedFloat32Array(), RID texture=RID(), int count=-1 )
在 item
RID 指向的 CanvasItem 上绘制一个三角形数组。渲染 Line2D 和 StyleBoxFlat 时内部使用。canvas_item_add_triangle_array 非常灵活,但用起来要比 canvas_item_add_polygon 复杂。
注意:count
未使用,可以不指定。
void canvas_item_clear ( RID item )
清空 CanvasItem 并删除其中的所有命令。
RID canvas_item_create ( )
新建 CanvasItem 实例并返回其 RID。可以通过返回的 RID 进行访问。这个 RID 会在所有 canvas_item_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价节点为 CanvasItem。
void canvas_item_set_canvas_group_mode ( RID item, CanvasGroupMode mode, float clear_margin=5.0, bool fit_empty=false, float fit_margin=0.0, bool blur_mipmaps=false )
设置对画布项进行 2D 渲染时使用的画布分组模式,画布项由 item
RID 指定。要使用更快速但局限性更大的裁剪,请改用 canvas_item_set_clip。
注意:等价的节点功能可以在 CanvasGroup 和 CanvasItem.clip_children 中找到。
void canvas_item_set_clip ( RID item, bool clip )
如果 clip
为 true
,则画布项不会在其矩形坐标之外绘制内容,画布项由 item
RID 指定。这种裁剪很快,但只能用于轴对齐的矩形。也就是说裁剪矩形会忽略旋转。更高阶的裁剪形状请改用 canvas_item_set_canvas_group_mode。
注意:等价的节点功能可以在 Label.clip_text、RichTextLabel(始终启用)等处找到。
void canvas_item_set_copy_to_backbuffer ( RID item, bool enabled, Rect2 rect )
设置 CanvasItem 以将矩形复制到后台缓冲区。
void canvas_item_set_custom_rect ( RID item, bool use_custom_rect, Rect2 rect=Rect2(0, 0, 0, 0) )
如果 use_custom_rect
为 true
,则将画布项 item
的自定义可见性框设置为 rect
(用于剔除)。设置自定义可见性框能够在绘制大量 2D 实例时降低 CPU 负载。如果 use_custom_rect
为 false
,则会根据画布项的绘制命令自动计算可见性框。
void canvas_item_set_default_texture_filter ( RID item, CanvasItemTextureFilter filter )
设置 RID 为 item
的画布项的默认纹理过滤模式。等价于 CanvasItem.texture_filter。
void canvas_item_set_default_texture_repeat ( RID item, CanvasItemTextureRepeat repeat )
设置 RID 为 item
的画布项的默认纹理重复模式。等价于 CanvasItem.texture_repeat。
void canvas_item_set_distance_field_mode ( RID item, bool enabled )
如果 enabled
为 true
,则为 RID 为 item
的画布项启用多通道带符号距离场渲染模式。旨在用于字体渲染,或针对使用 msdfgen 生成的图像。
void canvas_item_set_draw_behind_parent ( RID item, bool enabled )
如果 enabled
为 true
,则为 RID 为 item
的画布项绘制在父级之后。等价于 CanvasItem.show_behind_parent。
void canvas_item_set_draw_index ( RID item, int index )
设置 CanvasItem 的索引。
void canvas_item_set_light_mask ( RID item, int mask )
设置 RID 为 item
的画布项的灯光掩码 mask
。等价于 CanvasItem.light_mask。
void canvas_item_set_material ( RID item, RID material )
设置 RID 为 item
的画布项的新材质 material
。等价于 CanvasItem.material。
void canvas_item_set_modulate ( RID item, Color color )
将 RID 为 item
的画布项的颜色与其相乘,子项也受影响。另见 canvas_item_set_self_modulate。等价于 CanvasItem.modulate。
void canvas_item_set_parent ( RID item, RID parent )
为 CanvasItem 设置父级 CanvasItem。该项目会从父级继承变换、调制、可见性,和场景树中的 CanvasItem 节点一样。
void canvas_item_set_self_modulate ( RID item, Color color )
将 RID 为 item
的画布项的颜色与其相乘,子项不受影响。另见 canvas_item_set_modulate。等价于 CanvasItem.self_modulate。
void canvas_item_set_sort_children_by_y ( RID item, bool enabled )
如果 enabled
为 true
,则会在绘制 Y 位置最低的子节点之后再绘制 Y 位置较高的子节点。Y 排序仅影响继承自该画布项的子级,不影响画布项自身,该画布项由 item
RID 指定。等价于 CanvasItem.y_sort_enabled。
void canvas_item_set_transform ( RID item, Transform2D transform )
将 RID 为 item
的画布项的变换设置为 transform
。会影响该画布项绘制的位置和方法。子级画布项的变换会与父级变换相乘。等价于 Node2D.transform。
void canvas_item_set_use_parent_material ( RID item, bool enabled )
设置 CanvasItem 是否使用其父级的材质。
void canvas_item_set_visibility_layer ( RID item, int visibility_layer )
设置与这个 CanvasItem 关联的渲染可见性层。只有渲染掩码与此匹配的 Viewport 节点才会渲染这个 CanvasItem。
void canvas_item_set_visibility_notifier ( RID item, bool enable, Rect2 area, Callable enter_callable, Callable exit_callable )
将给定的 CanvasItem 设置为可见性通知器。area
定义可见性检查的区域。CanvasItem 进入屏幕时会调用 enter_callable
,CanvasItem 退出屏幕时会调用 exit_callable
。如果 enable
为 false
,则该项目将不再作为通知器。
这个方法可用于手动模仿 VisibleOnScreenNotifier2D。
void canvas_item_set_visible ( RID item, bool visible )
设置 CanvasItem 的可见性。
void canvas_item_set_z_as_relative_to_parent ( RID item, bool enabled )
如果启用此选项,则父项的 Z 索引将添加到子项的 Z 索引中。
void canvas_item_set_z_index ( RID item, int z_index )
设置 CanvasItem 的 Z 索引,即它的绘制顺序(首先绘制数值较低的索引)。
void canvas_light_attach_to_canvas ( RID light, RID canvas )
将画布灯连接到画布上,并将其从以前的画布中取出。
RID canvas_light_create ( )
创建画布灯光并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 canvas_light_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价节点为 Light2D。
void canvas_light_occluder_attach_to_canvas ( RID occluder, RID canvas )
将光遮挡物添加到画布上,并将其从之前的画布中移除。
RID canvas_light_occluder_create ( )
创建光线遮挡器并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 canvas_light_occluder_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价节点为 LightOccluder2D。
void canvas_light_occluder_set_as_sdf_collision ( RID occluder, bool enable )
目前没有这个方法的描述。请帮我们贡献一个!
void canvas_light_occluder_set_enabled ( RID occluder, bool enabled )
启用或禁用遮光器。
void canvas_light_occluder_set_light_mask ( RID occluder, int mask )
光线遮罩。详情请参阅 LightOccluder2D。
void canvas_light_occluder_set_polygon ( RID occluder, RID polygon )
设置光遮挡物的多边形。
void canvas_light_occluder_set_transform ( RID occluder, Transform2D transform )
设置光遮挡物的 Transform2D。
void canvas_light_set_blend_mode ( RID light, CanvasLightBlendMode mode )
设置给定画布灯光的混合模式。选项见 CanvasLightBlendMode。等价于 Light2D.blend_mode。
void canvas_light_set_color ( RID light, Color color )
设置灯光的颜色。
void canvas_light_set_enabled ( RID light, bool enabled )
启用或禁用画布灯。
void canvas_light_set_energy ( RID light, float energy )
设置画布灯的能量。
void canvas_light_set_height ( RID light, float height )
设置画布灯的高度。
void canvas_light_set_item_cull_mask ( RID light, int mask )
光线遮罩。详情请参阅 LightOccluder2D。
void canvas_light_set_item_shadow_cull_mask ( RID light, int mask )
用于确定此画布灯光阴影影响哪些图层的二进制蒙版。有关光遮罩的更多信息,请参阅 LightOccluder2D。
void canvas_light_set_layer_range ( RID light, int min_layer, int max_layer )
使用此灯光渲染的图层范围。
void canvas_light_set_mode ( RID light, CanvasLightMode mode )
光的模式,详见CanvasLightMode。
void canvas_light_set_shadow_color ( RID light, Color color )
设置画布灯的阴影颜色。
void canvas_light_set_shadow_enabled ( RID light, bool enabled )
启用或禁用画布灯的阴影。
void canvas_light_set_shadow_filter ( RID light, CanvasLightShadowFilter filter )
设置画布灯的阴影过滤器,详见 CanvasLightShadowFilter 。
void canvas_light_set_shadow_smooth ( RID light, float smooth )
使阴影变得平滑。数值越低越光滑。
void canvas_light_set_texture ( RID light, RID texture )
设置 PointLight2D 所使用的纹理。相当于 PointLight2D.texture。
void canvas_light_set_texture_offset ( RID light, Vector2 offset )
设置 PointLight2D 纹理的偏移量。相当于 PointLight2D.offset。
void canvas_light_set_texture_scale ( RID light, float scale )
设置 PointLight2D 纹理的缩放系数。相当于 PointLight2D.texture_scale。
void canvas_light_set_transform ( RID light, Transform2D transform )
设置画布灯的 Transform2D。
void canvas_light_set_z_range ( RID light, int min_z, int max_z )
设置将受此光影响的对象的 Z 范围。相当于 Light2D.range_z_min 和 Light2D.range_z_max。
RID canvas_occluder_polygon_create ( )
新建光线遮挡多边形并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 canvas_occluder_polygon_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价节点为 OccluderPolygon2D。
void canvas_occluder_polygon_set_cull_mode ( RID occluder_polygon, CanvasOccluderPolygonCullMode mode )
设置遮挡多边形剔除模式。详见 CanvasOccluderPolygonCullMode 。
void canvas_occluder_polygon_set_shape ( RID occluder_polygon, PackedVector2Array shape, bool closed )
设置遮挡多边形的形状。
void canvas_set_disable_scale ( bool disable )
目前没有这个方法的描述。请帮我们贡献一个!
void canvas_set_item_mirroring ( RID canvas, RID item, Vector2 mirroring )
画布项目的副本将以镜像的局部偏移量Vector2被绘制。
void canvas_set_modulate ( RID canvas, Color color )
调制给定画布中的所有颜色。
void canvas_set_shadow_texture_size ( int size )
设置 Light2D 阴影渲染时使用的 ProjectSettings.rendering/2d/shadow_atlas/size(单位为像素)。该值会向上取整到最接近的 2 的幂。
RID canvas_texture_create ( )
创建画布纹理并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 canvas_texture_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。另见 texture_2d_create。
注意:等价资源为 CanvasTexture,应该仅用于 2D 渲染,不用于 3D。
void canvas_texture_set_channel ( RID canvas_texture, CanvasTextureChannel channel, RID texture )
为画布纹理设置 channel
通道的纹理 texture
,该画布纹理由 RID canvas_texture
指定。等价于 CanvasTexture.diffuse_texture、CanvasTexture.normal_texture 和 CanvasTexture.specular_texture。
void canvas_texture_set_shading_parameters ( RID canvas_texture, Color base_color, float shininess )
为画布纹理设置 base_color
和 shininess
,该画布纹理由 RID canvas_texture
指定。等价于 CanvasTexture.specular_color 和 CanvasTexture.specular_shininess。
void canvas_texture_set_texture_filter ( RID canvas_texture, CanvasItemTextureFilter filter )
为画布纹理设置纹理过滤模式 filter
,该画布纹理由 RID canvas_texture
指定。
void canvas_texture_set_texture_repeat ( RID canvas_texture, CanvasItemTextureRepeat repeat )
为画布纹理设置纹理重复模式 repeat
,该画布纹理由 RID canvas_texture
指定。
RenderingDevice create_local_rendering_device ( ) const
创建一个 RenderingDevice,可以用来在单独的线程上进行绘制和计算操作。不能绘制到屏幕上,也不能与全局的 RenderingDevice 共享数据。
注意:使用 OpenGL 后端或在无头模式下运行时,这个函数始终返回 null
。
RID decal_create ( )
创建贴花并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 decal_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
如果要将这个贴花放置到场景中,请使用返回的 RID 调用 instance_set_base,将其附加至某个实例上。
注意:等价节点为 Decal。
void decal_set_albedo_mix ( RID decal, float albedo_mix )
为贴花设置 albedo_mix
,该贴花由 RID decal
指定。等价于 Decal.albedo_mix。
void decal_set_cull_mask ( RID decal, int mask )
为贴花设置剔除掩码 mask
,该贴花由 RID decal
指定。等价于 Decal.cull_mask。
void decal_set_distance_fade ( RID decal, bool enabled, float begin, float length )
为贴花设置距离淡出参数,该贴花由 RID decal
指定。等价于 Decal.distance_fade_enabled、Decal.distance_fade_begin 和 Decal.distance_fade_length。
void decal_set_emission_energy ( RID decal, float energy )
为贴花设置自发光能量 energy
,该贴花由 RID decal
指定。等价于 Decal.emission_energy。
void decal_set_fade ( RID decal, float above, float below )
为贴花设置上侧淡出(above
)和下侧淡出(below
),该贴花由 RID decal
指定。等价于 Decal.upper_fade 和 Decal.lower_fade。
void decal_set_modulate ( RID decal, Color color )
将贴花的颜色乘数设置为 color
,该贴花由 RID decal
指定。等价于 Decal.modulate。
void decal_set_normal_fade ( RID decal, float fade )
设置 RID 为 decal
的贴花的法线淡出 fade
。等价于 Decal.normal_fade。
void decal_set_size ( RID decal, Vector3 size )
设置 RID 为 decal
的贴花的大小 size
。等价于 Decal.size。
void decal_set_texture ( RID decal, DecalTexture type, RID texture )
设置指定贴花中给定纹理类型插槽 type
的纹理 texture
。等价于 Decal.set_texture。
void decals_set_filter ( DecalFilter filter )
设置渲染贴花时所使用的纹理过滤模式 filter
。这个参数是全局的,无法针对某个贴花单独设置。
RID directional_light_create ( )
创建平行光并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在大多数 light_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
如果要将这个平行光放置到场景中,请使用返回的 RID 调用 instance_set_base,将其附加至某个实例上。
注意:等价节点为 DirectionalLight3D。
void directional_shadow_atlas_set_size ( int size, bool is_16bits )
设置 3D 方向灯光的阴影大小 size
。另见 ProjectSettings.rendering/lights_and_shadows/directional_shadow/size。这个参数是全局的,无法针对某个视口单独设置。
void directional_soft_shadow_filter_set_quality ( ShadowQuality quality )
设置 3D 方向灯光的阴影过滤质量 quality
。另见 ProjectSettings.rendering/lights_and_shadows/directional_shadow/soft_shadow_filter_quality。这个参数是全局的,无法针对某个视口单独设置。
Image environment_bake_panorama ( RID environment, bool bake_irradiance, Vector2i size )
生成并返回包含 environment
RID 中的天空的辐射度贴图的 Image。支持内置天空材质和自定义天空着色器。如果 bake_irradiance
为 true
,则保存的是辐照度贴图,而不是辐射度贴图。辐射度贴图用于渲染反射光,而辐照度贴图用于渲染环境光。另见 sky_bake_panorama。
注意:图像使用线性色彩空间保存,未执行任何色调映射,也就是说如果在图像编辑器中查看会显得太暗。
注意:要让生成的全景图拥有正方形的像素,size
的长宽比应该为 2:1。辐射度贴图的高度超过 Sky.radiance_size 没有意义,不会增加细节。辐照度仅包含低频数据,保存时超过 128×64 像素通常没有意义。
RID environment_create ( )
创建环境并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 environment_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价资源为 Environment。
void environment_glow_set_use_bicubic_upscale ( bool enable )
如果 enable
为 true
,则会为辉光启用双三次插值,能够牺牲性能、提升质量。等价于 ProjectSettings.rendering/environment/glow/upscale_mode。
void environment_set_adjustment ( RID env, bool enable, float brightness, float contrast, float saturation, bool use_1d_color_correction, RID color_correction )
设置用于“调整”后期处理效果的数值。详见 Environment。
void environment_set_ambient_light ( RID env, Color color, EnvironmentAmbientSource ambient=0, float energy=1.0, float sky_contibution=0.0, EnvironmentReflectionSource reflection_source=0 )
设置用于环境光渲染的数值。详见 Environment。
void environment_set_background ( RID env, EnvironmentBG bg )
设置环境的背景模式。等价于 Environment.background_mode。
void environment_set_bg_color ( RID env, Color color )
场景中清屏区域的颜色。仅在使用 ENV_BG_COLOR 背景模式时有效。
void environment_set_bg_energy ( RID env, float multiplier, float exposure_value )
设置背景颜色的强度。
void environment_set_canvas_max_layer ( RID env, int max_layer )
如果使用画布背景模式,设置要使用的最大层数。
void environment_set_fog ( RID env, bool enable, Color light_color, float light_energy, float sun_scatter, float density, float height, float height_density, float aerial_perspective, float sky_affect )
为指定的环境 RID 配置雾。详见 Environment 中的 fog_*
属性。
void environment_set_glow ( RID env, bool enable, PackedFloat32Array levels, float intensity, float strength, float mix, float bloom_threshold, EnvironmentGlowBlendMode blend_mode, float hdr_bleed_threshold, float hdr_bleed_scale, float hdr_luminance_cap, float glow_map_strength, RID glow_map )
为指定的环境 RID 配置辉光。详见 Environment 中的 glow_*
属性。
void environment_set_sdfgi ( RID env, bool enable, int cascades, float min_cell_size, EnvironmentSDFGIYScale y_scale, bool use_occlusion, float bounce_feedback, bool read_sky, float energy, float normal_bias, float probe_bias )
为指定的环境 RID 配置带符号距离场全局光照。详见 Environment 中的 sdfgi_*
属性。
void environment_set_sdfgi_frames_to_converge ( EnvironmentSDFGIFramesToConverge frames )
设置用于聚合带符号距离场全局光照的帧数。等价于 ProjectSettings.rendering/global_illumination/sdfgi/frames_to_converge。
void environment_set_sdfgi_frames_to_update_light ( EnvironmentSDFGIFramesToUpdateLight frames )
设置计算带符号距离场全局光照时动态灯光间接光照的更新速度。等价于 ProjectSettings.rendering/global_illumination/sdfgi/frames_to_update_lights。
void environment_set_sdfgi_ray_count ( EnvironmentSDFGIRayCount ray_count )
设置计算带符号距离场全局光照时每帧射出的光线数。等价于 ProjectSettings.rendering/global_illumination/sdfgi/probe_ray_count。
void environment_set_sky ( RID env, RID sky )
设置当使用 BGMode 天空时被用作环境背景的 Sky。相当于 Environment.sky。
void environment_set_sky_custom_fov ( RID env, float scale )
为背景 Sky 设置自定义视野。相当于 Environment.sky_custom_fov。
void environment_set_sky_orientation ( RID env, Basis orientation )
设置被表示为 Basis 的背景 Sky 的旋转。相当于 Environment.sky_rotation,其中旋转向量用于构建该 Basis。
void environment_set_ssao ( RID env, bool enable, float radius, float intensity, float power, float detail, float horizon, float sharpness, float light_affect, float ao_channel_affect )
设置屏幕空间环境光遮蔽(SSAO)后期处理效果所使用的变量。详情见 Environment。
void environment_set_ssao_quality ( EnvironmentSSAOQuality quality, bool half_size, float adaptive_target, int blur_passes, float fadeout_from, float fadeout_to )
设置屏幕空间环境光遮蔽(SSAO)后期处理效果的质量级别。详情见 Environment。
void environment_set_ssil_quality ( EnvironmentSSILQuality quality, bool half_size, float adaptive_target, int blur_passes, float fadeout_from, float fadeout_to )
设置屏幕空间间接照明(SSIL)后期处理效果的质量级别。详情见 Environment。
void environment_set_ssr ( RID env, bool enable, int max_steps, float fade_in, float fade_out, float depth_tolerance )
设置屏幕空间反射(SSR)后期处理效果所使用的变量。详情见 Environment。
void environment_set_ssr_roughness_quality ( EnvironmentSSRRoughnessQuality quality )
目前没有这个方法的描述。请帮我们贡献一个!
void environment_set_tonemap ( RID env, EnvironmentToneMapper tone_mapper, float exposure, float white )
设置“色调映射”后期处理效果所使用的变量。详情见 Environment。
void environment_set_volumetric_fog ( RID env, bool enable, float density, Color albedo, Color emission, float emission_energy, float anisotropy, float length, float p_detail_spread, float gi_inject, bool temporal_reprojection, float temporal_reprojection_amount, float ambient_inject, float sky_affect )
设置体积雾后期处理效果所使用的变量。详情见 Environment。
void environment_set_volumetric_fog_filter_active ( bool active )
启用体积雾散射缓冲区的过滤。这会产生更平滑的体积,并且几乎没有欠采样伪影。
void environment_set_volumetric_fog_volume_size ( int size, int depth )
设置体积雾的片段体素缓冲区分辨率。size
会被屏幕的纵横比修改,用于设置缓冲区的宽度和高度。depth
则用于设置缓冲区的深度。
RID fog_volume_create ( )
新建雾体积并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 fog_volume_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价节点为 FogVolume。
void fog_volume_set_material ( RID fog_volume, RID material )
设置该雾体积的 Material。可以是 FogMaterial,也可以是自定义的 ShaderMaterial。
void fog_volume_set_shape ( RID fog_volume, FogVolumeShape shape )
将雾体积的形状设置为 FOG_VOLUME_SHAPE_ELLIPSOID、FOG_VOLUME_SHAPE_CONE、FOG_VOLUME_SHAPE_CYLINDER、FOG_VOLUME_SHAPE_BOX 或 FOG_VOLUME_SHAPE_WORLD。
void fog_volume_set_size ( RID fog_volume, Vector3 size )
设置形状为 FOG_VOLUME_SHAPE_ELLIPSOID、FOG_VOLUME_SHAPE_CONE、FOG_VOLUME_SHAPE_CYLINDER 或 FOG_VOLUME_SHAPE_BOX 时,雾体积的大小。
void force_draw ( bool swap_buffers=true, float frame_step=0.0 )
立即强制重绘所有的视口。
void force_sync ( )
强制在 CPU 和 GPU 之间进行同步,某些情况下是必须的。请只在需要时调用,因为 CPU-GPU 同步对性能有影响。
void free_rid ( RID rid )
尝试释放 RenderingServer 中的某个对象。为了避免内存泄漏,应该在使用完对象后调用,因为直接使用 RenderingServer 时不会自动进行内存管理。
Color get_default_clear_color ( )
返回默认清屏颜色,会在没有选择特定的清屏颜色时使用。另见 set_default_clear_color。
float get_frame_setup_time_cpu ( ) const
返回在 CPU 上设置渲染所消耗的时间,单位为毫秒。这个值是所有视口共享的,不需要在查询的视口上启用 viewport_set_measure_render_time。另见 viewport_get_measured_render_time_cpu。
RenderingDevice get_rendering_device ( ) const
返回全局的 RenderingDevice。
注意:当使用 OpenGL 后端或在无头模式下运行时,这个函数始终返回 null
。
int get_rendering_info ( RenderingInfo info )
返回关于渲染引擎的统计信息,能够用于性能分析。能够查询的值的列表见 RenderingInfo。另见 viewport_get_render_info,返回的是某个视口的相关信息。
注意:部分值目前仅考虑 3D 渲染,例如绘制调用的数量。
注意:引擎渲染至少 2 帧后渲染信息才可用。渲染信息不可用时 get_rendering_info 返回 0
。要在 _ready()
中成功输出渲染信息,请使用如下代码:
func _ready():
for _i in 2:
await get_tree().process_frame
print(RenderingServer.get_rendering_info(RENDERING_INFO_TOTAL_DRAW_CALLS_IN_FRAME))
Dictionary[] get_shader_parameter_list ( RID shader ) const
返回着色器的参数。
RID get_test_cube ( )
返回测试立方体的 RID。首次调用 get_test_cube 时会创建并返回该网格,然后为后续调用缓存。另见 make_sphere_mesh。
RID get_test_texture ( )
返回带有测试图案的 256×256 纹理(格式为 Image.FORMAT_RGB8)。首次调用 get_test_texture 时会创建并返回该纹理,然后为后续调用缓存。另见 get_white_texture。
获取测试纹理并将其应用至 Sprite2D 节点的示例:
var texture_rid = RenderingServer.get_test_texture()
var texture = ImageTexture.create_from_image(RenderingServer.texture_2d_get(texture_rid))
$Sprite2D.texture = texture
String get_video_adapter_api_version ( ) const
返回当前使用的图形视频适配器的版本(例如,Vulkan 为“1.2.189”,OpenGL 为“3.3.0 NVIDIA 510.60.02”)。该版本可能与硬件支持的实际最新版本不同,因为 Godot 可能并不总是要求最新版本。另见 OS.get_video_adapter_driver_info。
注意:当运行无头或服务器可执行文件时,该函数返回一个空字符串。
String get_video_adapter_name ( ) const
返回视频适配器的名称(例如“GeForce GTX 1080/PCIe/SSE2”)。
注意:运行无头或服务器二进制文件时,该函数返回空字符串。
注意:在 web 平台上,某些浏览器(例如 Firefox)可能会报告不同的固定 GPU 名称,例如“GeForce GTX 980”(无论用户的实际 GPU 型号如何)。这样做是为了使指纹识别更加困难。
DeviceType get_video_adapter_type ( ) const
返回视频适配器的类型。由于给定代的专用显卡通常明显快于同一代制造的集成显卡,因此设备类型可用作自动图形设置调整的基础。然而,这并不总是正确的,因此请确保为用户提供一种手动覆盖图形设置的方法。
注意:当使用 OpenGL 后端或在无头模式下运行时,该函数始终返回 RenderingDevice.DEVICE_TYPE_OTHER。
String get_video_adapter_vendor ( ) const
返回视频适配器的供应商(例如 “NVIDIA Corporation”)。
注意:当运行精简或服务器可执行文件时,该函数返回一个空字符串。
RID get_white_texture ( )
返回 4×4 的白色纹理(格式为 Image.FORMAT_RGB8)。首次调用 get_white_texture 时会创建并返回该纹理,然后为后续调用缓存。另见 get_test_texture。
获取测试纹理并将其应用至 Sprite2D 节点的示例:
var texture_rid = RenderingServer.get_white_texture()
var texture = ImageTexture.create_from_image(RenderingServer.texture_2d_get(texture_rid))
$Sprite2D.texture = texture
void gi_set_use_half_resolution ( bool half_resolution )
如果 half_resolution
为 true
,则每个轴上都会使用一半的分辨率渲染 VoxelGI 和 SDFGI(Environment.sdfgi_enabled)缓冲区(例如视口大小为 1920×1080 时使用 960×540)。启用 VoxelGI 或 SDFGI 时,这样做能够显著提升性能,但代价是多边形边缘可能产生显示问题。视口分辨率越高,越不容易注意到质量的损失。LightmapGI 的渲染不受这个设置的影响。等价于 ProjectSettings.rendering/global_illumination/gi/use_half_resolution。
void global_shader_parameter_add ( StringName name, GlobalShaderParameterType type, Variant default_value )
新建全局着色器 uniform。
注意:全局着色器参数名称是大小写敏感的。
Variant global_shader_parameter_get ( StringName name ) const
返回名称为 name
的全局着色器 uniform 的值。
注意:global_shader_parameter_get 存在较大的性能损耗,因为渲染线程需要与调用线程同步,这个过程比较慢。为了避免卡顿,请勿在游戏过程中使用这个方法。如果你需要在设置后在脚本中读取,请考虑创建一个自动加载,在设置全局参数的同时保存一份你需要查询的值。
StringName[] global_shader_parameter_get_list ( ) const
返回全局着色器 uniform 名称的列表。
注意:global_shader_parameter_get 存在较大的性能损耗,因为渲染线程需要与调用线程同步,这个过程比较慢。为了避免卡顿,请勿在游戏过程中使用这个方法。如果你需要在设置后在脚本中读取,请考虑创建一个自动加载,在设置全局参数的同时保存一份你需要查询的值。
GlobalShaderParameterType global_shader_parameter_get_type ( StringName name ) const
返回与名称为 name
的全局着色器 uniform 相关联的类型。
注意:global_shader_parameter_get 存在较大的性能损耗,因为渲染线程需要与调用线程同步,这个过程比较慢。为了避免卡顿,请勿在游戏过程中使用这个方法。如果你需要在设置后在脚本中读取,请考虑创建一个自动加载,在设置全局参数的同时保存一份你需要查询的值。
void global_shader_parameter_remove ( StringName name )
移除名称为 name
的全局着色器 Uniform。
void global_shader_parameter_set ( StringName name, Variant value )
将名称为 name
的全局着色器 Uniform 设置为 value
。
void global_shader_parameter_set_override ( StringName name, Variant value )
使用 value
覆盖名称为 name
的全局着色器 Uniform。等价于 ShaderGlobalsOverride 节点。
bool has_changed ( ) const
如果对 RenderingServer 的数据进行了更改,则返回 true
。如果发生这种情况,通常会调用 force_draw。
bool has_feature ( Features feature ) const
还没有实现。总是返回 false
。
bool has_os_feature ( String feature ) const
如果操作系统支持某个特性 feature
,则返回 true
。特性可以是 s3tc
、etc
、etc2
。
void instance_attach_object_instance_id ( RID instance, int id )
将唯一的对象 ID 附加到实例上。必须将对象 ID 附加到实例上,以便通过 instances_cull_aabb、instances_cull_convex 和 instances_cull_ray 进行正确的筛除。
void instance_attach_skeleton ( RID instance, RID skeleton )
将骨架附加到实例。并从实例中移除之前骨架。
RID instance_create ( )
创建可视实例并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 instance_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
实例可以将 3D 对象放置到场景中。粒子、网格、反射探针、贴花等对象都需要使用 instance_set_base 与实例关联,才能显示在场景中。
注意:等价节点为 VisualInstance3D。
RID instance_create2 ( RID base, RID scenario )
创建可视实例并将其添加到 RenderingServer、设置基础和场景。可以通过返回的 RID 进行访问。这个 RID 会在大多数 instance_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。这是使用 instance_create 并手动设置基础和场景的快捷方式。
Variant instance_geometry_get_shader_parameter ( RID instance, StringName parameter ) const
返回指定 3D 几何体实例的单实例着色器 uniform 的值。等价于 GeometryInstance3D.get_instance_shader_parameter。
注意:单实例着色器参数的名称是大小写敏感的。
Variant instance_geometry_get_shader_parameter_default_value ( RID instance, StringName parameter ) const
返回指定 3D 几何体实例的单实例着色器 uniform 的默认值。等价于 GeometryInstance3D.get_instance_shader_parameter。
Dictionary[] instance_geometry_get_shader_parameter_list ( RID instance ) const
返回指定 3D 几何体实例的单实例着色器名称字典。返回的字典使用 PropertyInfo 格式,包含 name
、class_name
、type
、hint
、hint_string
以及 usage
等键。等价于 GeometryInstance3D.get_instance_shader_parameter。
void instance_geometry_set_cast_shadows_setting ( RID instance, ShadowCastingSetting shadow_casting_setting )
将阴影的投射设置设置为 ShadowCastingSetting 之一。相当于 GeometryInstance3D.cast_shadow。
void instance_geometry_set_flag ( RID instance, InstanceFlags flag, bool enabled )
设置给定的 InstanceFlags 标志。更多细节请参阅 InstanceFlags。
void instance_geometry_set_lightmap ( RID instance, RID lightmap, Rect2 lightmap_uv_scale, int lightmap_slice )
为指定的 3D 几何体实例设置要使用的光照贴图 GI 实例。必须同时指定该实例的光照贴图 UV 缩放(等价于 GeometryInstance3D.gi_lightmap_scale)和光照贴图图集切片。
void instance_geometry_set_lod_bias ( RID instance, float lod_bias )
为指定的 3D 几何体实例设置要使用的细节级别偏置。值越高,距离较远时的细节也会越高。等价于 GeometryInstance3D.lod_bias。
void instance_geometry_set_material_overlay ( RID instance, RID material )
设置一个材质,该材质将在与该实例关联的网格的活动材质之上,为所有表面渲染。相当于GeometryInstance3D.material_overlay。
void instance_geometry_set_material_override ( RID instance, RID material )
设置一种材质,该材质将覆盖与此实例关联的网格上的所有表面的材质。相当于 GeometryInstance3D.material_override。
void instance_geometry_set_shader_parameter ( RID instance, StringName parameter, Variant value )
设置指定的 3D 几何体实例的单实例着色器 uniform。等价于 GeometryInstance3D.set_instance_shader_parameter。
void instance_geometry_set_transparency ( RID instance, float transparency )
设置给定几何体实例的透明度。相当于 GeometryInstance3D.transparency。
透明度为 0.0
时完全不透明,为 1.0
时则完全透明。如果值比 0.0
大,则会强制让几何体的材质经过透明管线,渲染起来相对较慢,可能由于错误的透明排序而产生渲染问题。不过,与使用透明材质不同,将 transparency
设置为比 0.0
大的值不会禁用阴影的渲染。
在空间着色器中,内置 ALPHA
的默认值为 1.0 - transparency
。
注意:transparency
会被钳制在 0.0
和 1.0
的范围内,所以这个属性无法让透明材质比原来更不透明。
void instance_geometry_set_visibility_range ( RID instance, float min, float max, float min_margin, float max_margin, VisibilityRangeFadeMode fade_mode )
设置给定几何实例的可见性范围值。相当于 GeometryInstance3D.visibility_range_begin 和相关属性。
void instance_set_base ( RID instance, RID base )
设置实例的基础。基础可以是在 RenderingServer 中创建的任何可以显示的 3D 对象。例如,任何光源类型、网格、多重网格、粒子系统、反射探针、贴花、光照贴图、体素 GI 和可见性通知器都可以设置为实例的基础,以便在场景中显示。
void instance_set_blend_shape_weight ( RID instance, int shape, float weight )
设置与该实例相关的特定混合形状的权重。
void instance_set_custom_aabb ( RID instance, AABB aabb )
设置将对象从视锥中剔除时使用的自定义 AABB。相当于设置 GeometryInstance3D.custom_aabb。
void instance_set_extra_visibility_margin ( RID instance, float margin )
设置将对象从视锥中剔除时为 AABB 增加的边距大小。这样就可以避免剔除落在视锥外的对象。相当于 GeometryInstance3D.extra_cull_margin。
void instance_set_ignore_culling ( RID instance, bool enabled )
如果为 true
,则会忽略指定 3D 几何体实例的视锥剔除和遮挡剔除。和 GeometryInstance3D.ignore_occlusion_culling 不同,后者只会忽略遮挡剔除,仍会保留视锥剔除。
void instance_set_layer_mask ( RID instance, int mask )
设置这个实例要绘制到的渲染层。相当于 VisualInstance3D.layers。
void instance_set_pivot_data ( RID instance, float sorting_offset, bool use_aabb_center )
设置排序偏移量,并在使用包围框还是实例原点进行深度排序之间进行切换。
void instance_set_scenario ( RID instance, RID scenario )
设置实例所在的场景。场景是对象将在其中显示的 3D 世界。
void instance_set_surface_override_material ( RID instance, int surface, RID material )
设置指定表面的覆盖材质。相当于 MeshInstance3D.set_surface_override_material。
void instance_set_transform ( RID instance, Transform3D transform )
设置该实例的世界空间变换。相当于 Node3D.transform。
void instance_set_visibility_parent ( RID instance, RID parent )
设置给定实例的可见性父级。相当于 Node3D.visibility_parent。
void instance_set_visible ( RID instance, bool visible )
设置是否绘制实例。相当于 Node3D.visible。
PackedInt64Array instances_cull_aabb ( AABB aabb, RID scenario=RID() ) const
返回与提供的 AABB 相交的对象 ID 的数组。仅考虑继承自 VisualInstance3D 的 3D 节点,例如 MeshInstance3D 或 DirectionalLight3D。可使用 @GlobalScope.instance_from_id 来获取实际节点。必须提供一个场景 RID,且它在要查询的 World3D 中可用。这会强制更新所有已被队列以等待更新的资源。
警告:该函数主要供编辑器使用。对于游戏中的用例,最好是物理碰撞。
PackedInt64Array instances_cull_convex ( Plane[] convex, RID scenario=RID() ) const
返回与提供的凸形相交的对象 ID 的数组。仅考虑继承自 VisualInstance3D 的 3D 节点,例如 MeshInstance3D 或 DirectionalLight3D。可使用 @GlobalScope.instance_from_id 以获取实际节点。必须提供场景 RID,且它在要查询的 World3D 中可用。这会强制更新所有已被队列以等待更新的资源。
警告:该函数主要供编辑器使用。对于游戏中的用例,最好是物理碰撞。
PackedInt64Array instances_cull_ray ( Vector3 from, Vector3 to, RID scenario=RID() ) const
返回与提供的 3D 射线相交的对象 ID 的数组。仅考虑继承自 VisualInstance3D 的 3D 节点,例如 MeshInstance3D 或 DirectionalLight3D。可使用 @GlobalScope.instance_from_id 以获取实际节点。必须提供场景 RID,且它在你要查询的 World3D 中可用。这会强制更新所有已被队列以等待更新的资源。
警告:该函数主要供编辑器使用。对于游戏中的用例,最好是物理碰撞。
void light_directional_set_blend_splits ( RID light, bool enable )
如果为 true
,则该平行光将在阴影贴图分割之间混合,从而在它们之间产生更平滑的过渡。相当于 DirectionalLight3D.directional_shadow_blend_splits。
void light_directional_set_shadow_mode ( RID light, LightDirectionalShadowMode mode )
设置该平行光的阴影模式。相当于 DirectionalLight3D.directional_shadow_mode。有关选项,请参阅 LightDirectionalShadowMode。
void light_directional_set_sky_mode ( RID light, LightDirectionalSkyMode mode )
如果为 true
,则该灯光将不会被用于除天空着色器之外的任何内容。将其用于影响天空着色器的灯光,可能希望隐藏这些灯光以免影响场景的其余部分。例如,当天空着色器中的太阳落在地平线以下时,可能希望启用该功能。
void light_omni_set_shadow_mode ( RID light, LightOmniShadowMode mode )
设置是使用双抛物面还是立方体贴图作为阴影贴图。双抛物面速度更快,但可能会出现伪影。相当于 OmniLight3D.omni_shadow_mode。
void light_projectors_set_filter ( LightProjectorFilter filter )
设置渲染光线投射器时使用的纹理过滤模式。这个参数是全局的,不能单独针对某个灯光进行设置。
void light_set_bake_mode ( RID light, LightBakeMode bake_mode )
设置指定 3D 灯光所使用的烘焙模式。相当于 Light3D.light_bake_mode。
void light_set_color ( RID light, Color color )
设置灯光的颜色。相当于 Light3D.light_color。
void light_set_cull_mask ( RID light, int mask )
设置该 3D 灯光的剔除掩码。灯光仅影响选定层中的对象。相当于 Light3D.light_cull_mask。
void light_set_distance_fade ( RID decal, bool enabled, float begin, float shadow, float length )
设置该 3D 灯光的淡入淡出距离。这充当了一种多细节层次(LOD)的形式,可用于提高性能。相当于 Light3D.distance_fade_enabled、Light3D.distance_fade_begin、Light3D.distance_fade_shadow 和 Light3D.distance_fade_length。
void light_set_max_sdfgi_cascade ( RID light, int cascade )
设置渲染 3D 灯光间接光照时的 SDFGI 最大级联数。较高的值能够让远离相机的灯光在 SDFGI 中渲染。
void light_set_negative ( RID light, bool enable )
如果为 true
,则该 3D 灯光会扣除光照而不是增加。等价于 Light3D.light_negative。
void light_set_param ( RID light, LightParam param, float value )
设置指定的 3D 灯光参数。选项见 LightParam。等价于 Light3D.set_param。
void light_set_projector ( RID light, RID texture )
设置指定 3D 灯光使用的投射器纹理。等价于 Light3D.light_projector。
void light_set_reverse_cull_face_mode ( RID light, bool enabled )
如果为 true
,则反转网格的背面剔除。当有一个背后有灯光的平面网格时,这会很有用。如果需要在网格的两侧投射阴影,请使用 instance_geometry_set_cast_shadows_setting,将网格设置为使用双面阴影。相当于 Light3D.shadow_reverse_cull_face。
void light_set_shadow ( RID light, bool enabled )
如果为 true
,则灯光会投射阴影。相当于 Light3D.shadow_enabled。
RID lightmap_create ( )
新建全局光照的光照贴图并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 lightmap_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:与其等价的资源为 LightmapGI。
PackedInt32Array lightmap_get_probe_capture_bsp_tree ( RID lightmap ) const
目前没有这个方法的描述。请帮我们贡献一个!
PackedVector3Array lightmap_get_probe_capture_points ( RID lightmap ) const
目前没有这个方法的描述。请帮我们贡献一个!
PackedColorArray lightmap_get_probe_capture_sh ( RID lightmap ) const
目前没有这个方法的描述。请帮我们贡献一个!
PackedInt32Array lightmap_get_probe_capture_tetrahedra ( RID lightmap ) const
目前没有这个方法的描述。请帮我们贡献一个!
void lightmap_set_baked_exposure_normalization ( RID lightmap, float baked_exposure )
用于通知渲染器在烘焙光照贴图时使用的曝光归一化值。该值将在运行时被使用和被调制,以确保即使场景范围的曝光归一化值在运行时发生变化,光照贴图也能保持一致的曝光水平。有关详细信息,请参阅 camera_attributes_set_exposure。
void lightmap_set_probe_bounds ( RID lightmap, AABB bounds )
目前没有这个方法的描述。请帮我们贡献一个!
void lightmap_set_probe_capture_data ( RID lightmap, PackedVector3Array points, PackedColorArray point_sh, PackedInt32Array tetrahedra, PackedInt32Array bsp_tree )
目前没有这个方法的描述。请帮我们贡献一个!
void lightmap_set_probe_capture_update_speed ( float speed )
目前没有这个方法的描述。请帮我们贡献一个!
void lightmap_set_probe_interior ( RID lightmap, bool interior )
目前没有这个方法的描述。请帮我们贡献一个!
void lightmap_set_textures ( RID lightmap, RID light, bool uses_sh )
将给定光照贴图 lightmap
GI 实例的纹理设置为 light
RID 所指向的纹理数组。如果烘焙光照贴图纹理时的 LightmapGI.directional 为 true
,则 uses_sh
也必须为 true
。
RID make_sphere_mesh ( int latitudes, int longitudes, float radius )
返回球体网格,具有给定数量的水平细分、垂直细分、半径。另见 get_test_cube。
RID material_create ( )
创建空材质并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 material_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:与其等价的资源为 Material。
Variant material_get_param ( RID material, StringName parameter ) const
返回特定材质的参数值。
void material_set_next_pass ( RID material, RID next_material )
设置对象的下一个材质。
void material_set_param ( RID material, StringName parameter, Variant value )
设置材质的参数。
void material_set_render_priority ( RID material, int priority )
设置材质的渲染优先级。
void material_set_shader ( RID shader_material, RID shader )
设置着色器材质的着色器。
void mesh_add_surface ( RID mesh, Dictionary surface )
目前没有这个方法的描述。请帮我们贡献一个!
void mesh_add_surface_from_arrays ( RID mesh, PrimitiveType primitive, Array arrays, Array blend_shapes=[], Dictionary lods={}, BitField<ArrayFormat> compress_format=0 )
目前没有这个方法的描述。请帮我们贡献一个!
void mesh_clear ( RID mesh )
移除网格中的所有表面。
RID mesh_create ( )
新建网格并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 mesh_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
如果要将这个网格放置到场景中,请使用返回的 RID 调用 instance_set_base,将其附加至某个实例上。
注意:与其等价的资源为 Mesh。
RID mesh_create_from_surfaces ( Dictionary[] surfaces, int blend_shape_count=0 )
目前没有这个方法的描述。请帮我们贡献一个!
int mesh_get_blend_shape_count ( RID mesh ) const
返回一个网格的混合形状数量。
BlendShapeMode mesh_get_blend_shape_mode ( RID mesh ) const
返回网格的混合形状模式。
AABB mesh_get_custom_aabb ( RID mesh ) const
返回网格的自定义 AABB。
Dictionary mesh_get_surface ( RID mesh, int surface )
目前没有这个方法的描述。请帮我们贡献一个!
int mesh_get_surface_count ( RID mesh ) const
返回网格的面数。
void mesh_set_blend_shape_mode ( RID mesh, BlendShapeMode mode )
设置网格的混合形状模式。
void mesh_set_custom_aabb ( RID mesh, AABB aabb )
设置网格的自定义 AABB。
void mesh_set_shadow_mesh ( RID mesh, RID shadow_mesh )
目前没有这个方法的描述。请帮我们贡献一个!
Array mesh_surface_get_arrays ( RID mesh, int surface ) const
返回网格表面的缓冲区数组。
Array[] mesh_surface_get_blend_shape_arrays ( RID mesh, int surface ) const
返回网格表面的混合形状数组。
int mesh_surface_get_format_attribute_stride ( BitField<ArrayFormat> format, int vertex_count ) const
返回具有给定 format
的网格的属性缓冲区的步幅。
int mesh_surface_get_format_normal_tangent_stride ( BitField<ArrayFormat> format, int vertex_count ) const
返回具有给定 format
的网格的组合法线和切线的步幅。重要的是请注意,虽然法线和切线位于带有顶点的顶点缓冲区中,但它们仅彼此交错,因此具有与顶点位置不同的步幅。
int mesh_surface_get_format_offset ( BitField<ArrayFormat> format, int vertex_count, int array_index ) const
返回由 array_index
给定属性在其各自缓冲区开头的偏移量。
int mesh_surface_get_format_skin_stride ( BitField<ArrayFormat> format, int vertex_count ) const
返回具有给定 format
的网格的皮肤缓冲区的步幅。
int mesh_surface_get_format_vertex_stride ( BitField<ArrayFormat> format, int vertex_count ) const
返回具有给定 format
的网格的顶点位置的步幅。请注意,重要的是,顶点位置是连续存储的,并且不与顶点缓冲区中的其他属性(法线和切线)交错。
RID mesh_surface_get_material ( RID mesh, int surface ) const
返回网格表面的材质。
void mesh_surface_set_material ( RID mesh, int surface, RID material )
设置网格表面的材质。
void mesh_surface_update_attribute_region ( RID mesh, int surface, int offset, PackedByteArray data )
目前没有这个方法的描述。请帮我们贡献一个!
void mesh_surface_update_skin_region ( RID mesh, int surface, int offset, PackedByteArray data )
目前没有这个方法的描述。请帮我们贡献一个!
void mesh_surface_update_vertex_region ( RID mesh, int surface, int offset, PackedByteArray data )
目前没有这个方法的描述。请帮我们贡献一个!
void multimesh_allocate_data ( RID multimesh, int instances, MultimeshTransformFormat transform_format, bool color_format=false, bool custom_data_format=false )
目前没有这个方法的描述。请帮我们贡献一个!
RID multimesh_create ( )
新建多网格并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 multimesh_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
如果要将这个多网格放置到场景中,请使用返回的 RID 调用 instance_set_base,将其附加至某个实例上。
注意:与其等价的资源为 MultiMesh。
AABB multimesh_get_aabb ( RID multimesh ) const
计算并返回轴对齐的边界框,该边界框将所有的实例都包含在 multimesh 中。
PackedFloat32Array multimesh_get_buffer ( RID multimesh ) const
返回 MultiMesh 数据(实例的变换、颜色等)。返回数据的描述见 multimesh_set_buffer。
注意:如果缓冲位于引擎的内部缓存中,则需要从 GPU 显存获取,并且有可能需要解压。也就是说 multimesh_get_buffer 可能会比较慢,应该尽可能避免。
int multimesh_get_instance_count ( RID multimesh ) const
返回分配给这个 multimesh 的实例的数量。
RID multimesh_get_mesh ( RID multimesh ) const
返回用于绘制此 multimesh 的 RID。
int multimesh_get_visible_instances ( RID multimesh ) const
返回此 multimesh 的可见实例数。
Color multimesh_instance_get_color ( RID multimesh, int index ) const
返回指定实例将被调制的颜色。
Color multimesh_instance_get_custom_data ( RID multimesh, int index ) const
返回与指定实例相关的自定义数据。
Transform3D multimesh_instance_get_transform ( RID multimesh, int index ) const
返回指定实例的 Transform3D。
Transform2D multimesh_instance_get_transform_2d ( RID multimesh, int index ) const
返回指定实例的 Transform2D。只在 multimesh 设置为使用 2D 变换时使用。
void multimesh_instance_set_color ( RID multimesh, int index, Color color )
设置这个实例的调制颜色。相当于 MultiMesh.set_instance_color。
void multimesh_instance_set_custom_data ( RID multimesh, int index, Color custom_data )
为这个实例设置自定义数据。自定义数据以 Color 的形式传递,但在着色器中会被解释为 vec4
。相当于 MultiMesh.set_instance_custom_data。
void multimesh_instance_set_transform ( RID multimesh, int index, Transform3D transform )
为此实例设置 Transform3D。相当于 MultiMesh.set_instance_transform。
void multimesh_instance_set_transform_2d ( RID multimesh, int index, Transform2D transform )
为此实例设置 Transform2D。用于在 2D 中使用 multimesh 时。相当于 MultiMesh.set_instance_transform_2d。
void multimesh_set_buffer ( RID multimesh, PackedFloat32Array buffer )
将用于绘制 multimesh
的全部数据立即写入 buffer
(例如实例的变换和颜色)。buffer
的大小必须与实例数和单实例数据大小的乘积匹配(后者取决于启用的 MultiMesh 字段)。否则,会输出错误信息,不渲染任何东西。另见 multimesh_get_buffer。
单实例数据大小与预期的数据顺序如下:
2D:
- 位置:8 个 float(Transform2D 占 8 个 float)
- 位置 + 顶点颜色:12 个 float(Transform2D 占 8 个 float、颜色占 4 个 float)
- 位置 + 自定义数据:12 个 float(Transform2D 占 8 个 float、自定义数据占 4 个 float)
- 位置 + 顶点颜色 + 自定义数据:16 个 float(Transform2D 占 8 个 float、颜色占 4 个 float、自定义数据占 4 个 float)
3D:
- 位置:12 个 float(Transform3D 占 12 个 float)
- 位置 + 顶点颜色:16 个 float(Transform3D 占 12 个 float、颜色占 4 个 float)
- 位置 + 自定义数据:16 个 float(Transform3D 占 12 个 float、自定义数据占 4 个 float)
- 位置 + 顶点颜色 + 自定义数据:20 个 float(Transform3D 占 12 个 float、颜色占 4 个 float、自定义数据占 4 个 float)
void multimesh_set_mesh ( RID multimesh, RID mesh )
设置 Multimesh 所要绘制的网格。相当于 MultiMesh.mesh。
void multimesh_set_visible_instances ( RID multimesh, int visible )
设置在给定时间内可见的实例的数量。如果是 -1,所有被分配的实例都会被画出来。相当于 MultiMesh.visible_instance_count。
RID occluder_create ( )
创建遮挡器实例并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 occluder_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:与其等价的资源为 Occluder3D(请勿与 OccluderInstance3D 节点混淆)。
void occluder_set_mesh ( RID occluder, PackedVector3Array vertices, PackedInt32Array indices )
设置给定遮挡器 RID 的网格数据,控制执行遮挡剔除时的形状。
RID omni_light_create ( )
创建一个新的全向灯并将其添加到 RenderingServer。可以使用返回的 RID 访问它。该 RID 可用于大多数 light_*
RenderingServer 函数。
一旦使用 RID 完成操作后,需要使用 RenderingServer 的方法 free_rid 来释放该 RID。
要放置在场景中,请使用 instance_set_base 使用该返回的 RID 将该全向灯附加到一个实例。
注意:等价节点为 OmniLight3D。
RID particles_collision_create ( )
新建 3D GPU 粒子碰撞或吸引器并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 particles_collision_*
RenderingServer 函数中使用。
注意:等价节点为 GPUParticlesCollision3D 和 GPUParticlesAttractor3D。
void particles_collision_height_field_update ( RID particles_collision )
请求对 3D GPU 粒子碰撞高度图进行更新。3D GPU 粒子碰撞高度图可能会自动调用这个函数,取决于 GPUParticlesCollisionHeightField3D.update_mode。
void particles_collision_set_attractor_attenuation ( RID particles_collision, float curve )
为 RID 为 particles_collision
的 3D GPU 粒子吸引器设置衰减曲线 curve
。仅用于吸引器,对碰撞体不适用。等价于 GPUParticlesAttractor3D.attenuation。
void particles_collision_set_attractor_directionality ( RID particles_collision, float amount )
设置 3D GPU 粒子吸引器的方向量 amount
,吸引器由 RID particles_collision
指定。仅用于吸引器,不适用于碰撞体。等价于 GPUParticlesAttractor3D.directionality。
void particles_collision_set_attractor_strength ( RID particles_collision, float strength )
设置 3D GPU 粒子吸引器的强度 strength
,吸引器由 RID particles_collision
指定。仅用于吸引器,不适用于碰撞体。等价于 GPUParticlesAttractor3D.strength。
void particles_collision_set_box_extents ( RID particles_collision, Vector3 extents )
设置 3D GPU 粒子吸引器的范围 extents
,吸引器由 RID particles_collision
指定。根据 particles_collision
类型的不同,等价于 GPUParticlesCollisionBox3D.size、GPUParticlesCollisionSDF3D.size、GPUParticlesCollisionHeightField3D.size、GPUParticlesAttractorBox3D.size、GPUParticlesAttractorVectorField3D.size。
void particles_collision_set_collision_type ( RID particles_collision, ParticlesCollisionType type )
设置 3D GPU 粒子碰撞或吸引器的形状类型 type
,碰撞或吸引器由 RID particles_collision
指定。
void particles_collision_set_cull_mask ( RID particles_collision, int mask )
设置 3D GPU 粒子碰撞或吸引器的剔除掩码 mask
,碰撞或吸引器由 RID particles_collision
指定。根据 particles_collision
类型的不同,等价于 GPUParticlesCollision3D.cull_mask 或 GPUParticlesAttractor3D.cull_mask。
void particles_collision_set_field_texture ( RID particles_collision, RID texture )
设置 3D GPU 粒子碰撞的带符号距离场纹理 texture
,碰撞由 RID particles_collision
指定。根据 particles_collision
类型的不同,等价于 GPUParticlesCollisionSDF3D.texture 或 GPUParticlesAttractorVectorField3D.texture。
void particles_collision_set_height_field_resolution ( RID particles_collision, ParticlesCollisionHeightfieldResolution resolution )
设置 3D GPU 粒子高度图碰撞的高度图分辨率 resolution
,碰撞由 RID particles_collision
指定。等价于 GPUParticlesCollisionHeightField3D.resolution。
void particles_collision_set_sphere_radius ( RID particles_collision, float radius )
设置 3D GPU 粒子球体碰撞或吸引器的半径 radius
,碰撞或吸引器由 RID particles_collision
指定。根据 particles_collision
类型的不同,等价于 GPUParticlesCollisionSphere3D.radius 或 GPUParticlesAttractorSphere3D.radius。
RID particles_create ( )
创建基于 GPU 的粒子系统并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 particles_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
如果要将这个粒子系统放置到场景中,请使用返回的 RID 调用 instance_set_base,将其附加至某个实例上。
注意:等价节点为 GPUParticles2D 和 GPUParticles3D。
注意:所有 particles_*
方法都仅适用于基于 GPU 的粒子,不适用于基于 CPU 的粒子。RenderingServer 中没有 CPUParticles2D 和 CPUParticles3D 的等价函数,因为这两个节点底层使用的是 MultiMeshInstance2D 和 MultiMeshInstance3D(见 multimesh_*
方法)。
void particles_emit ( RID particles, Transform3D transform, Vector3 velocity, Color color, Color custom, int emit_flags )
从 particles
实例中手动发射粒子。
AABB particles_get_current_aabb ( RID particles )
计算并返回包含所有粒子的轴对齐边界框。相当于 GPUParticles3D.capture_aabb。
bool particles_get_emitting ( RID particles )
如果当前粒子被设置发射,则返回 true
。
bool particles_is_inactive ( RID particles )
如果粒子没有发射并且粒子设置为非活动状态,则返回 true
。
void particles_request_process ( RID particles )
将粒子系统添加到需要更新的粒子系统列表中。更新将在下一帧或下一次调用 instances_cull_aabb、instances_cull_convex 或 instances_cull_ray 时进行。
void particles_restart ( RID particles )
下次更新时重置粒子。相当于 GPUParticles3D.restart。
void particles_set_amount ( RID particles, int amount )
设置要绘制的粒子的数量,并为其分配内存。相当于 GPUParticles3D.amount。
void particles_set_amount_ratio ( RID particles, float ratio )
设置要被发射的粒子的数量比率。相当于 GPUParticles3D.amount_ratio。
void particles_set_collision_base_size ( RID particles, float size )
目前没有这个方法的描述。请帮我们贡献一个!
void particles_set_custom_aabb ( RID particles, AABB aabb )
设置粒子系统的自定义轴对齐边界框。相当于 GPUParticles3D.visibility_aabb。
void particles_set_draw_order ( RID particles, ParticlesDrawOrder order )
将粒子的绘制顺序设置为命名枚举 ParticlesDrawOrder。选项见 ParticlesDrawOrder。相当于 GPUParticles3D.draw_order。
void particles_set_draw_pass_mesh ( RID particles, int pass, RID mesh )
设置用于指定绘制阶段的网格。相当于 GPUParticles3D.draw_pass_1、GPUParticles3D.draw_pass_2、GPUParticles3D.draw_pass_3、和 GPUParticles3D.draw_pass_4。
void particles_set_draw_passes ( RID particles, int count )
设置要使用的绘制阶段的数量。相当于 GPUParticles3D.draw_passes。
void particles_set_emission_transform ( RID particles, Transform3D transform )
设置粒子首次发射时使用的 Transform3D。
void particles_set_emitter_velocity ( RID particles, Vector3 velocity )
设置粒子节点的速度,将由 ParticleProcessMaterial.inherit_velocity_ratio 使用。
void particles_set_emitting ( RID particles, bool emitting )
如果为 true
,则粒子将随时间发射。设置为 false 不会重置粒子,只会停止发射。相当于 GPUParticles3D.emitting。
void particles_set_explosiveness_ratio ( RID particles, float ratio )
设置爆发比例。相当于 GPUParticles3D.explosiveness。
void particles_set_fixed_fps ( RID particles, int fps )
设置粒子系统渲染的固定帧率。相当于 GPUParticles3D.fixed_fps。
void particles_set_fractional_delta ( RID particles, bool enable )
如果为 true
,则使用分数增量来平滑粒子的运动。相当于 GPUParticles3D.fract_delta。
void particles_set_interp_to_end ( RID particles, float factor )
设置通知 ParticleProcessMaterial 将所有粒子冲向其生命周期终点的值。
void particles_set_interpolate ( RID particles, bool enable )
目前没有这个方法的描述。请帮我们贡献一个!
void particles_set_lifetime ( RID particles, float lifetime )
设置系统中每个粒子的生命周期。相当于 GPUParticles3D.lifetime。
void particles_set_mode ( RID particles, ParticlesMode mode )
设置由 RID particles
指定的 GPU 粒子是否应该根据 mode
在 2D 或 3D 中渲染。
void particles_set_one_shot ( RID particles, bool one_shot )
如果为 true
,则粒子将发射一次然后停止。相当于 GPUParticles3D.one_shot。
void particles_set_pre_process_time ( RID particles, float time )
设置粒子动画的预处理时间。这样可以让动画延迟到粒子开始发射之后再开始。相当于 GPUParticles3D.preprocess。
void particles_set_process_material ( RID particles, RID material )
设置用于处理粒子的材质。
注意:这不是用来绘制材质的材质。相当于 GPUParticles3D.process_material。
void particles_set_randomness_ratio ( RID particles, float ratio )
设置发射随机性比例。会随机化该粒子在其相位内的发射。相当于 GPUParticles3D.randomness。
void particles_set_speed_scale ( RID particles, float scale )
设置粒子系统的速度缩放。相当于 GPUParticles3D.speed_scale。
void particles_set_subemitter ( RID particles, RID subemitter_particles )
目前没有这个方法的描述。请帮我们贡献一个!
void particles_set_trail_bind_poses ( RID particles, Transform3D[] bind_poses )
目前没有这个方法的描述。请帮我们贡献一个!
void particles_set_trails ( RID particles, bool enable, float length_sec )
如果 enable
为 true
,则会为 particles
启用尾迹,长度为 length_sec
秒。等价于 GPUParticles3D.trail_enabled 和 GPUParticles3D.trail_lifetime。
void particles_set_transform_align ( RID particles, ParticlesTransformAlign align )
目前没有这个方法的描述。请帮我们贡献一个!
void particles_set_use_local_coordinates ( RID particles, bool enable )
如果为 true
,则粒子使用局部坐标。如果为 false
则使用全局坐标。相当于 GPUParticles3D.local_coords。
void positional_soft_shadow_filter_set_quality ( ShadowQuality quality )
设置 3D 全向灯和聚光灯阴影的过滤质量。另见 ProjectSettings.rendering/lights_and_shadows/positional_shadow/soft_shadow_filter_quality。这个参数是全局的,无法针对单个视口设置。
RID reflection_probe_create ( )
创建反射探针并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 reflection_probe_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
如果要将这个反射探针放置到场景中,请使用返回的 RID 调用 instance_set_base,将其附加至某个实例上。
注意:等价节点为 ReflectionProbe。
void reflection_probe_set_ambient_color ( RID probe, Color color )
设置反射探针的自定义环境光颜色。等价于 ReflectionProbe.ambient_color。
void reflection_probe_set_ambient_energy ( RID probe, float energy )
设置反射探针的自定义环境光能量。等价于 ReflectionProbe.ambient_color_energy。
void reflection_probe_set_ambient_mode ( RID probe, ReflectionProbeAmbientMode mode )
设置反射探针的环境光模式。等价于 ReflectionProbe.ambient_mode。
void reflection_probe_set_as_interior ( RID probe, bool enable )
如果为 true
,则反射将忽略天空的贡献。相当于 ReflectionProbe.interior。
void reflection_probe_set_cull_mask ( RID probe, int layers )
为这个反射探针设置渲染遮蔽。只有具有匹配的遮蔽罩的实例才会被这个探针渲染。相当于 ReflectionProbe.cull_mask。
void reflection_probe_set_enable_box_projection ( RID probe, bool enable )
如果为 true
,则使用箱体投影。这可以使反射在某些情况下看起来更正确。相当于 ReflectionProbe.box_projection。
void reflection_probe_set_enable_shadows ( RID probe, bool enable )
如果为 true
,计算反射探针中的阴影。这会使得反射的计算速度慢得多。相当于 ReflectionProbe.enable_shadows。
void reflection_probe_set_intensity ( RID probe, float intensity )
设置反射探针的强度。强度调节反射的强度。相当于 ReflectionProbe.intensity。
void reflection_probe_set_max_distance ( RID probe, float distance )
设置物体在被删除前与探针的最大距离。相当于 ReflectionProbe.max_distance。
void reflection_probe_set_mesh_lod_threshold ( RID probe, float pixels )
设置渲染反射探针时所使用的网格细节级别。值越高,生成了 LOD 变体的网格所使用的版本细节就越低,能够提升性能。等价于 ReflectionProbe.mesh_lod_threshold。
void reflection_probe_set_origin_offset ( RID probe, Vector3 offset )
设置当此反射探针处于框项目模式时要使用的源偏移。相当于 ReflectionProbe.origin_offset。
void reflection_probe_set_resolution ( RID probe, int resolution )
设置渲染指定的反射探针时使用的分辨率。resolution
指定的是各个立方体贴图面的分辨率:例如指定 512
时就会分配 6 个 512×512 的面(另外还有粗糙度级别的 mipmap)。
void reflection_probe_set_size ( RID probe, Vector3 size )
设置反射探针将捕获的区域的大小。相当于 ReflectionProbe.size。
void reflection_probe_set_update_mode ( RID probe, ReflectionProbeUpdateMode mode )
设置反射探针的更新频率。可以是一次,也可以是每一帧。参阅 ReflectionProbeUpdateMode 选项。
void request_frame_drawn_callback ( Callable callable )
安排对给定可调用体的回调,会在一帧绘制完成后回调。
RID scenario_create ( )
创建场景并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 scenario_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
场景是所有可视实例存在的 3D 世界。
void scenario_set_camera_attributes ( RID scenario, RID effects )
设置该场景会使用的相机属性(effects
)。另见 CameraAttributes。
void scenario_set_environment ( RID scenario, RID environment )
设置该场景会使用的环境。另见 Environment。
void scenario_set_fallback_environment ( RID scenario, RID environment )
设置此方案所使用的后备环境。如果没有设置环境,则使用后备环境。这被编辑器用来提供一个默认环境。
void screen_space_roughness_limiter_set_active ( bool enable, float amount, float limit )
设置屏幕空间粗糙度限制参数,例如是否应该启用以及阈值等。等价于 ProjectSettings.rendering/anti_aliasing/screen_space_roughness_limiter/enabled、ProjectSettings.rendering/anti_aliasing/screen_space_roughness_limiter/amount 和 ProjectSettings.rendering/anti_aliasing/screen_space_roughness_limiter/limit。
void set_boot_image ( Image image, Color color, bool scale, bool use_filter=true )
设置一个启动图像。颜色定义背景颜色。如果 scale
为 true
,则该图像将被缩放以适应屏幕大小。如果 use_filter
为 true
,则该图像将使用线性插值的方式进行缩放。如果 use_filter
为 false
,则该图像将使用最近邻插值的方式进行缩放。
void set_debug_generate_wireframes ( bool generate )
这个方法目前未实现,将 generate
设为 true
调用时没有任何效果。
void set_default_clear_color ( Color color )
设置默认清屏颜色,会在尚未选择特定的清屏颜色时使用。另见 get_default_clear_color。
RID shader_create ( )
创建空的着色器并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 shader_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价资源为 Shader。
String shader_get_code ( RID shader ) const
以字符串形式返回着色器的源代码。
RID shader_get_default_texture_parameter ( RID shader, StringName name, int index=0 ) const
返回着色器中的默认纹理,根据名称搜索。
注意:如果使用了采样器数组,请使用 index
访问指定的纹理。
Variant shader_get_parameter_default ( RID shader, StringName name ) const
返回指定着色器 Uniform 的默认值。通常是着色器源代码中编写的值。
void shader_set_code ( RID shader, String code )
设置着色器的源代码(更改后会出发重新编译)。
void shader_set_default_texture_parameter ( RID shader, StringName name, RID texture, int index=0 )
设置着色器的默认纹理。覆盖给定名称的纹理。
注意:使用采样器数组时,使用 index
访问指定的纹理。
void shader_set_path_hint ( RID shader, String path )
设置指定着色器路径提示。一般应该与 Shader 资源的 Resource.resource_path 相匹配。
void skeleton_allocate_data ( RID skeleton, int bones, bool is_2d_skeleton=false )
目前没有这个方法的描述。请帮我们贡献一个!
Transform3D skeleton_bone_get_transform ( RID skeleton, int bone ) const
返回该骨架中指定骨骼的 Transform3D。
Transform2D skeleton_bone_get_transform_2d ( RID skeleton, int bone ) const
返回该骨架中指定骨骼的 Transform2D。
void skeleton_bone_set_transform ( RID skeleton, int bone, Transform3D transform )
设置该骨架中指定骨骼的 Transform3D。
void skeleton_bone_set_transform_2d ( RID skeleton, int bone, Transform2D transform )
设置该骨架中指定骨骼的 Transform2D。
RID skeleton_create ( )
创建骨架并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 skeleton_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
int skeleton_get_bone_count ( RID skeleton ) const
返回分配给这个骨架的骨骼数量。
void skeleton_set_base_transform_2d ( RID skeleton, Transform2D base_transform )
目前没有这个方法的描述。请帮我们贡献一个!
Image sky_bake_panorama ( RID sky, float energy, bool bake_irradiance, Vector2i size )
生成并返回包含指定 sky
RID 的辐射度贴图的 Image。这样就能支持内置天空材质和自定义天空着色器。如果 bake_irradiance
为 true
,则会保存辐照度贴图,不保存辐射度贴图。辐射度贴图用于渲染反射光,而辐照度贴图用于渲染环境光。另见 environment_bake_panorama。
注意:图片保存时使用线性色彩空间,未进行色调映射,因此在图像编辑器中直接查看会感觉太暗。将 energy
设为大于 1.0
能够将得到的图像变亮。
注意:对于生成的全景图,size
应该是 2:1 的比例,才能够得到正方形的像素。对于辐射度贴图,将高度设为大于 Sky.radiance_size 的值没有意义,因为不会增加细节。辐照度贴图仅包含低频数据,因此保存辐照度贴图时通常大小超过 128×64 像素没有意义。
RID sky_create ( )
创建空的天空并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 sky_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
void sky_set_material ( RID sky, RID material )
设置天空用于渲染背景和反射贴图的材质。
void sky_set_mode ( RID sky, SkyMode mode )
设置 RID 为 sky
的天空的处理模式 mode
。等价于 Sky.process_mode。
void sky_set_radiance_size ( RID sky, int radiance_size )
设置 RID 为 sky
的天空的辐照大小 radiance_size
(单位为像素)。等价于 Sky.radiance_size。
RID spot_light_create ( )
创建聚光灯并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在大多数 light_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
如果要将这个聚光灯放置到场景中,请使用返回的 RID 调用 instance_set_base,将其附加至某个实例上。
void sub_surface_scattering_set_quality ( SubSurfaceScatteringQuality quality )
设置渲染启用了次表面散射的材质时使用的 ProjectSettings.rendering/environment/subsurface_scattering/subsurface_scattering_quality。
void sub_surface_scattering_set_scale ( float scale, float depth_scale )
设置渲染启用了次表面散射的材质时使用的 ProjectSettings.rendering/environment/subsurface_scattering/subsurface_scattering_scale 和 ProjectSettings.rendering/environment/subsurface_scattering/subsurface_scattering_depth_scale。
RID texture_2d_create ( Image image )
创建二维纹理并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 texture_2d_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价资源为 Texture2D。
注意:请勿与 RenderingDevice.texture_create 混淆,后者创建的是图形 API 自己的纹理类型,并非 Godot 专属的 Texture2D 资源。
Image texture_2d_get ( RID texture ) const
从给定的纹理 RID texture
返回 Image 实例。
从 get_test_texture 获取测试纹理并将其应用至 Sprite2D 节点的示例:
var texture_rid = RenderingServer.get_test_texture()
var texture = ImageTexture.create_from_image(RenderingServer.texture_2d_get(texture_rid))
$Sprite2D.texture = texture
Image texture_2d_layer_get ( RID texture, int layer ) const
返回给定 texture
RID 和 layer
中的 Image 实例。
RID texture_2d_layered_create ( Image[] layers, TextureLayeredType layered_type )
创建二维多层纹理并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 texture_2d_layered_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价资源为 TextureLayered。
RID texture_2d_layered_placeholder_create ( TextureLayeredType layered_type )
创建二维多层纹理的占位符并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 texture_2d_layered_*
RenderingServer 函数中使用,但使用时什么都不会发生。另见 texture_2d_placeholder_create。
注意:等价资源为 PlaceholderTextureLayered。
RID texture_2d_placeholder_create ( )
创建二维多层纹理的占位符并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 texture_2d_layered_*
RenderingServer 函数中使用,但使用时什么都不会发生。另见 texture_2d_layered_placeholder_create。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价资源为 PlaceholderTexture2D。
void texture_2d_update ( RID texture, Image image, int layer )
使用 image
中的数据更新由纹理 RID texture
指定的纹理。layer
也必须指定,更新单层纹理(Texture2D)时应为 0
。
注意:image
的宽度、高度、格式都必须和当前 texture
的数据相同。否则会输出错误,不会修改原始纹理。如果你需要使用不同的宽度、高度或格式,请改用 texture_replace。
RID texture_3d_create ( Format format, int width, int height, int depth, bool mipmaps, Image[] data )
注意:等价的资源是 Texture3D。
Image[] texture_3d_get ( RID texture ) const
以 Image 数组的形式返回指定纹理 RID 的 3D 纹理数据。
RID texture_3d_placeholder_create ( )
创建三维纹理的占位符并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 texture_3d_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价资源为 PlaceholderTexture3D。
void texture_3d_update ( RID texture, Image[] data )
使用 data
中的数据更新由纹理 RID texture
指定的纹理。必须同时更新所有纹理层。
注意:texture
的宽度、高度、格式都必须和当前纹理数据相同。否则会输出错误,不会修改原始纹理。如果你需要使用不同的宽度、高度或格式,请改用 texture_replace。
Format texture_get_format ( RID texture ) const
返回该纹理的 Format。
int texture_get_native_handle ( RID texture, bool srgb=false ) const
返回该纹理对象的内部图形句柄。主要用于 GDExtension 与第三方 API 通讯。
注意:这个函数返回的是 uint64_t
,内部映射到 GLuint
(OpenGL)或 VkImage
(Vulkan)。
String texture_get_path ( RID texture ) const
目前没有这个方法的描述。请帮我们贡献一个!
RID texture_get_rd_texture ( RID texture, bool srgb=false ) const
返回可用于 RenderingDevice 的纹理 RID。
RID texture_proxy_create ( RID base )
_已废弃。_ProxyTexture 已在 Godot 4 中移除,所以调用这个方法什么都不会发生,始终返回空 RID。
void texture_proxy_update ( RID texture, RID proxy_to )
_已废弃。_ProxyTexture 已在 Godot 4 中移除,所以这个方法无法再使用。
RID texture_rd_create ( RID rd_texture, TextureLayeredType layer_type=0 )
基于直接在 RenderingDevice 上创建的纹理创建新的纹理对象。如果该纹理包含图层,则 layer_type
被用于定义图层类型。
void texture_replace ( RID texture, RID by_texture )
将 texture
的纹理数据替换为由纹理 RID by_texture
指定的纹理,不会改变 texture
的 RID。
void texture_set_force_redraw_if_visible ( RID texture, bool enable )
目前没有这个方法的描述。请帮我们贡献一个!
void texture_set_path ( RID texture, String path )
目前没有这个方法的描述。请帮我们贡献一个!
void texture_set_size_override ( RID texture, int width, int height )
目前没有这个方法的描述。请帮我们贡献一个!
void viewport_attach_camera ( RID viewport, RID camera )
设置视图的相机。
void viewport_attach_canvas ( RID viewport, RID canvas )
设置视口的画布。
void viewport_attach_to_screen ( RID viewport, Rect2 rect=Rect2(0, 0, 0, 0), int screen=0 )
将该视口复制到 rect
指定的屏幕区域。如果 viewport_set_render_direct_to_screen 为 true
,则视口不使用帧缓冲区,视口的内容将直接渲染到屏幕。但是,请注意根视口是最后绘制的,因此它会覆盖屏幕。相应地,必须将根视口的区域设置为不覆盖附加该视口的区域。
例如,可以使用以下代码将根视口设置为完全不渲染:
FIXME:该方法似乎不存在。
GDScript
func _ready():
get_viewport().set_attach_to_screen_rect(Rect2())
$Viewport.set_attach_to_screen_rect(Rect2(0, 0, 600, 600))
使用它可以带来显著的优化,尤其是在低端设备上。但是,这是以必须手动管理视口为代价的。进一步优化请参见 viewport_set_render_direct_to_screen。
RID viewport_create ( )
创建空的视口并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 viewport_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价节点为 Viewport。
float viewport_get_measured_render_time_cpu ( RID viewport ) const
返回渲染上一帧所消耗的 CPU 时间,单位为毫秒。只包含渲染相关操作所消耗的时间;读数中不含脚本的 _process
函数及其他引擎子系统。要获取渲染场景所消耗 CPU 时间的完整读数,请将每帧绘制的所有视口的渲染时间以及 get_frame_setup_time_cpu 相加。与 Engine.get_frames_per_second 不同,即便帧率受到垂直同步或 Engine.max_fps 的限制,这个方法也会精确反映 CPU 利用率。另见 viewport_get_measured_render_time_gpu。
注意:需要使用 viewport_set_measure_render_time 启用 viewport
的测量。否则这个方法会返回 0.0
。
float viewport_get_measured_render_time_gpu ( RID viewport ) const
返回渲染上一帧所消耗的 GPU 时间,单位为毫秒。要获取渲染场景所消耗 GPU 时间的完整读数,请将每帧绘制的所有视口的渲染时间相加。与 Engine.get_frames_per_second 不同,即便帧率受到垂直同步或 Engine.max_fps 的限制,这个方法也会精确反映 GPU 利用率。另见 viewport_get_measured_render_time_gpu。
注意:需要使用 viewport_set_measure_render_time 启用 viewport
的测量。否则这个方法会返回 0.0
。
注意:GPU 的利用率在一段时间内低到一定程度时,GPU 会降低电源状态(导致内核与内存时钟速度的降低)。这会导致 GPU 在某个帧率下保持较低利用率时,汇报的 GPU 时间增大(相对于 GPU 的最高电源状态而言)。请在使用 viewport_get_measured_render_time_gpu 进行性能测试时牢记这一点。可以在显卡驱动的设置中改变这种行为,但代价是耗电量增大。
int viewport_get_render_info ( RID viewport, ViewportRenderInfoType type, ViewportRenderInfo info )
返回关于渲染引擎的统计信息,能够用于性能分析。会区分不同的渲染阶段类型 type
,每种类型都有相同的可查询信息 info
(不同的阶段会返回不同的值)。渲染阶段类型列表见 ViewportRenderInfoType,能够查询的信息列表见 ViewportRenderInfo。
另见 get_rendering_info,返回的是所有视口的全局信息。
注意:引擎渲染至少 2 帧后渲染信息才可用。渲染信息不可用时 viewport_get_render_info 返回 0
。要在 _ready()
中成功输出渲染信息,请使用如下代码:
func _ready():
for _i in 2:
await get_tree().process_frame
print(
RenderingServer.viewport_get_render_info(get_viewport().get_viewport_rid(),
RenderingServer.VIEWPORT_RENDER_INFO_TYPE_VISIBLE,
RenderingServer.VIEWPORT_RENDER_INFO_DRAW_CALLS_IN_FRAME)
)
RID viewport_get_render_target ( RID viewport ) const
返回该视口的渲染目标。
RID viewport_get_texture ( RID viewport ) const
返回视口的最后渲染帧。
void viewport_remove_canvas ( RID viewport, RID canvas )
从画布分离视口,反之亦然。
void viewport_set_active ( RID viewport, bool active )
如果为 true
,则将视口设置为活动状态,否则将其设置为非活动状态。
void viewport_set_canvas_cull_mask ( RID viewport, int canvas_cull_mask )
设置与此 Viewport 关联的渲染掩码。渲染可见层与之匹配的 CanvasItem 节点才会被此 Viewport 渲染。
void viewport_set_canvas_stacking ( RID viewport, RID canvas, int layer, int sublayer )
设置视口画布的堆叠顺序。
layer
是实际的画布层,而 sublayer
指定的是该画布在同一层中的堆叠顺序。
void viewport_set_canvas_transform ( RID viewport, RID canvas, Transform2D offset )
设置视口画布的变换。
void viewport_set_clear_mode ( RID viewport, ViewportClearMode clear_mode )
设置视口的清除模式。可选项见 ViewportClearMode。
void viewport_set_debug_draw ( RID viewport, ViewportDebugDraw draw )
设置视口的调试绘图模式。可选项见 ViewportDebugDraw。
void viewport_set_default_canvas_item_texture_filter ( RID viewport, CanvasItemTextureFilter filter )
设置视口的默认纹理过滤模式,视口由 viewport
RID 指定。选项见 CanvasItemTextureFilter。
void viewport_set_default_canvas_item_texture_repeat ( RID viewport, CanvasItemTextureRepeat repeat )
设置视口的默认纹理重复模式,视口由 viewport
RID 指定。选项见 CanvasItemTextureRepeat。
void viewport_set_disable_2d ( RID viewport, bool disable )
如果为 true
,则不渲染视口的画布(即 2D 和 GUI 元素)。
void viewport_set_disable_3d ( RID viewport, bool disable )
如果为 true
,则不渲染视口的 3D 元素。
void viewport_set_environment_mode ( RID viewport, ViewportEnvironmentMode mode )
设置视口的环境模式,该模式允许启用或禁用 2D 画布上的 3D 环境渲染。禁用时,2D 将不受环境影响。启用时,如果环境背景模式为 ENV_BG_CANVAS,则 2D 会受到环境的影响。默认行为是从视口的父级继承设置。如果最顶层的父级也被设置为 VIEWPORT_ENVIRONMENT_INHERIT,则该行为将与设置为 VIEWPORT_ENVIRONMENT_ENABLED 时相同。
void viewport_set_fsr_sharpness ( RID viewport, float sharpness )
决定使用 FSR 放大模式时放大图像的清晰度。每个整数的锐度减半。值从 0.0(最锐利)到 2.0。高于 2.0 的值不会产生明显的差异。
void viewport_set_global_canvas_transform ( RID viewport, Transform2D transform )
设置视口的全局变换矩阵。
void viewport_set_measure_render_time ( RID viewport, bool enable )
为给定的 viewport
RID(使用 Viewport.get_viewport_rid 获取)设置是否测量。启用后,使用给定的 viewport
对 viewport_get_measured_render_time_cpu 和 viewport_get_measured_render_time_gpu 进行查询返回的就是大于 0.0
的值。
void viewport_set_msaa_2d ( RID viewport, ViewportMSAA msaa )
设置 RID 为 viewport
的视口的 2D/画布多重采样抗锯齿模式。选项见 ViewportMSAA。
void viewport_set_msaa_3d ( RID viewport, ViewportMSAA msaa )
设置 RID 为 viewport
的视口的 3D 多重采样抗锯齿模式。选项见 ViewportMSAA。
void viewport_set_occlusion_culling_build_quality ( ViewportOcclusionCullingBuildQuality quality )
设置遮挡剔除的 ProjectSettings.rendering/occlusion_culling/bvh_build_quality。这个参数是全局的,无法针对特定视口设置。
void viewport_set_occlusion_rays_per_thread ( int rays_per_thread )
设置遮挡剔除的 ProjectSettings.rendering/occlusion_culling/occlusion_rays_per_thread。这个参数是全局的,无法针对特定视口设置。
void viewport_set_parent_viewport ( RID viewport, RID parent_viewport )
将该视口的父项设置为 parent_viewport
RID 指定的视口。
void viewport_set_positional_shadow_atlas_quadrant_subdivision ( RID viewport, int quadrant, int subdivision )
设置全向灯和聚光灯阴影的指定阴影图集象限 quadrant
的细分次数。另见 Viewport.set_positional_shadow_atlas_quadrant_subdiv。
void viewport_set_positional_shadow_atlas_size ( RID viewport, int size, bool use_16_bits=false )
设置阴影图集图像的大小(用于全向灯和聚光灯),大小由 size
指定,生效的视口由 viewport
RID 指定。该值将向上舍入到最接近的 2 次幂。如果 use_16_bits
为 true
,则会使用 16 位的全向灯/聚光灯阴影深度贴图。启用后,阴影的精度会降低,可能造成阴影失真,但能够在部分设备上提升性能。
注意:如果设置为 0
,将根本看不到任何阴影。可以通过降低 CPU 和 GPU 负载来显著提升在低端系统上的性能(因为绘制不带阴影的场景需要的绘制调用更少)。
void viewport_set_render_direct_to_screen ( RID viewport, bool enabled )
如果为 true
,则将视口的内容直接渲染到屏幕。这允许一个低级别的优化,可以跳过将视口绘制到根视口。虽然这种优化可以显著提高速度(尤其是在旧设备上),但它是以可用性为代价的。启用后,无法从视口或 screen_texture 读取。而且还会失去某些窗口设置的好处,例如各种拉伸模式。另一个需要注意的后果是,在 2D 中,渲染是以窗口坐标进行的,所以如果有一个两倍于窗口大小的视口,并且设置了这个属性,那么只会绘制适合窗口的部分, 无法自动缩放,即使游戏场景明显大于窗口大小。
void viewport_set_scaling_3d_mode ( RID viewport, ViewportScaling3DMode scaling_3d_mode )
设置 3D 分辨率缩放模式。双线性缩放使用不同的分辨率渲染,能够对视口进行欠采样或超采样。FidelityFX 超分辨率 1.0,缩写为 FSR,是一种放大技术,通过使用空间感知放大算法以快速帧速率生成高质量图像。FSR 比双线性的开销略大,但产生的图像质量明显更高。应尽可能使用 FSR。
void viewport_set_scaling_3d_scale ( RID viewport, float scale )
根据视图大小,缩放 3D 渲染缓冲区,使用 ViewportScaling3DMode 中指定的图像过滤器,将输出图像缩放到完整视图大小。低于 1.0
的值,可用于加速 3D 渲染,但会以质量为代价(欠采样)。大于 1.0
的值,仅对双线性模式有效,可用于以较高的性能成本(超级采样),提高 3D 渲染质量。另请参阅 ViewportMSAA 以了解多重采样抗锯齿,这要便宜得多,但只会平滑多边形的边缘。
在使用 FSR 放大时,AMD 建议将以下值,作为预设选项公开给用户:“超质量:0.77”、“质量:0.67”、“平衡:0.59”、“性能:0.5”,而不是公开整个比例。
void viewport_set_scenario ( RID viewport, RID scenario )
设置视口的场景。该场景包含环境、反射图集等信息。
void viewport_set_screen_space_aa ( RID viewport, ViewportScreenSpaceAA mode )
使用视口的屏幕空间抗锯齿模式。
void viewport_set_sdf_oversize_and_scale ( RID viewport, ViewportSDFOversize oversize, ViewportSDFScale scale )
设置视口的 2D 带符号距离场的 ProjectSettings.rendering/2d/sdf/oversize 和 ProjectSettings.rendering/2d/sdf/scale。在 CanvasItem 着色器中对带符号距离场进行采样时会用到,GPUParticles2D 碰撞时也会用到。3D 渲染时的 SDFGI 不会使用。
void viewport_set_size ( RID viewport, int width, int height )
设置视口的宽度和高度,单位为像素。
void viewport_set_snap_2d_transforms_to_pixel ( RID viewport, bool enabled )
如果为 true
,则画布项的变换(即原点的位置)会在渲染时吸附到整像素。这样外观看上去就会更锐利,但会影响移动的平滑程度,尤其是在启用了 Camera2D 平滑的情况下。等价于 ProjectSettings.rendering/2d/snap/snap_2d_transforms_to_pixel。
void viewport_set_snap_2d_vertices_to_pixel ( RID viewport, bool enabled )
如果为 true
,则画布项的顶点(即多边形的点)会在渲染时吸附到整像素。这样外观看上去就会更锐利,但会影响移动的平滑程度,尤其是在启用了 Camera2D 平滑的情况下。等价于 ProjectSettings.rendering/2d/snap/snap_2d_vertices_to_pixel。
void viewport_set_texture_mipmap_bias ( RID viewport, float mipmap_bias )
读取较低或较高的 mipmap,影响最终纹理的清晰度(也称为“纹理 LOD 偏置”)。负值会让 mipmap 纹理更锐利,但从较远处观察时颗粒更明显,而正值会让 mipmap 纹理更模糊(即便凑近看也一样)。要在不引入太多颗粒感的情况下,在远处获得更锐利的纹理,请将其设置在 -0.75
和 0.0
之间。启用时间抗锯齿(ProjectSettings.rendering/anti_aliasing/quality/use_taa)有助于减少使用负 mipmap 偏置时可见的颗粒度。
注意:当 3D 缩放模式设置为 FSR 1.0 时,会使用该值调整自动 mipmap 偏置,偏置的计算基于缩放系数。其公式为 -log2(1.0 / scale) + mipmap_bias
。
void viewport_set_transparent_background ( RID viewport, bool enabled )
如果为 true
,视口将其背景渲染为透明。
void viewport_set_update_mode ( RID viewport, ViewportUpdateMode update_mode )
设置应更新视口的时间。可选项请参阅 ViewportUpdateMode 。
void viewport_set_use_debanding ( RID viewport, bool enable )
如果为 true
,则在指定的视口上启用去条带。等价于 ProjectSettings.rendering/anti_aliasing/quality/use_debanding。
void viewport_set_use_hdr_2d ( RID viewport, bool enabled )
如果为 true
,2D 渲染将使用与 3D 帧缓冲区的位深度匹配的高动态范围(HDR)格式帧缓冲区。当使用 Forward+ 渲染器时,这将是一个 RGBA16
帧缓冲区,而当使用 Mobile 渲染器时,它将是一个 RGB10_A2
帧缓冲区。此外,2D 渲染将在线性色彩空间中进行,并在位块传输到屏幕之前(如果视口被连接到屏幕)立即转换为 sRGB 空间。实际上,这意味着视口的最终结果不会被钳制在 0-1
范围内,并且可以在不进行色彩空间调整的情况下被用于 3D 渲染。这使得 2D 渲染能够利用需要高动态范围的效果(例如 2D 辉光),并显著改善需要高度详细渐变的效果的外观。该设置与 Viewport.use_hdr_2d 效果相同。
注意:使用 GL 兼容渲染器时,该设置无效,因为出于性能原因,GL 兼容渲染器始终在低动态范围内渲染。
void viewport_set_use_occlusion_culling ( RID viewport, bool enable )
如果为 true
,则在指定的视口上启用遮挡剔除。等价于 ProjectSettings.rendering/occlusion_culling/use_occlusion_culling。
void viewport_set_use_taa ( RID viewport, bool enable )
如果为 true
,则在指定的视口上启用时间抗锯齿。等价于 ProjectSettings.rendering/anti_aliasing/quality/use_taa。
void viewport_set_use_xr ( RID viewport, bool use_xr )
如果为 true
,则视口使用增强或虚拟现实技术。参阅 XRInterface。
void viewport_set_vrs_mode ( RID viewport, ViewportVRSMode mode )
设置视口的可变速率着色(VRS)模式。如果 GPU 不支持 VRS 则会忽略该属性。等价于 ProjectSettings.rendering/vrs/mode。
void viewport_set_vrs_texture ( RID viewport, RID texture )
当 VRS 模式设置为 VIEWPORT_VRS_TEXTURE 时,要使用的纹理。等价于 ProjectSettings.rendering/vrs/texture。
RID visibility_notifier_create ( )
新建 3D 可见性通知对象并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 visibility_notifier_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
如果要将这个网格放置到场景中,请使用返回的 RID 调用 instance_set_base,将其附加至某个实例上。
注意:等价节点为 VisibleOnScreenNotifier3D。
void visibility_notifier_set_aabb ( RID notifier, AABB aabb )
目前没有这个方法的描述。请帮我们贡献一个!
void visibility_notifier_set_callbacks ( RID notifier, Callable enter_callable, Callable exit_callable )
目前没有这个方法的描述。请帮我们贡献一个!
void voxel_gi_allocate_data ( RID voxel_gi, Transform3D to_cell_xform, AABB aabb, Vector3i octree_size, PackedByteArray octree_cells, PackedByteArray data_cells, PackedByteArray distance_field, PackedInt32Array level_counts )
目前没有这个方法的描述。请帮我们贡献一个!
RID voxel_gi_create ( )
新建基于体素的全局光照对象并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID 会在所有 voxel_gi_*
RenderingServer 函数中使用。
RID 使用结束后,应该使用 RenderingServer 的 free_rid 方法进行释放。
注意:等价节点为 VoxelGI。
PackedByteArray voxel_gi_get_data_cells ( RID voxel_gi ) const
目前没有这个方法的描述。请帮我们贡献一个!
PackedByteArray voxel_gi_get_distance_field ( RID voxel_gi ) const
目前没有这个方法的描述。请帮我们贡献一个!
PackedInt32Array voxel_gi_get_level_counts ( RID voxel_gi ) const
目前没有这个方法的描述。请帮我们贡献一个!
PackedByteArray voxel_gi_get_octree_cells ( RID voxel_gi ) const
目前没有这个方法的描述。请帮我们贡献一个!
Vector3i voxel_gi_get_octree_size ( RID voxel_gi ) const
目前没有这个方法的描述。请帮我们贡献一个!
Transform3D voxel_gi_get_to_cell_xform ( RID voxel_gi ) const
目前没有这个方法的描述。请帮我们贡献一个!
void voxel_gi_set_baked_exposure_normalization ( RID voxel_gi, float baked_exposure )
用于通知渲染器烘焙体素 GI 时使用的曝光归一化值。运行时会使用这个值进行调制,确保体素 GI 能够维持恒定的曝光等级,即便场景范围的曝光归一化值在运行时发生改变。更多信息见 camera_attributes_set_exposure。
void voxel_gi_set_bias ( RID voxel_gi, float bias )
为 RID 为 voxel_gi
的对象设置 VoxelGIData.bias 值。
void voxel_gi_set_dynamic_range ( RID voxel_gi, float range )
为 RID 为 voxel_gi
的对象设置 VoxelGIData.dynamic_range 值。
void voxel_gi_set_energy ( RID voxel_gi, float energy )
为 RID 为 voxel_gi
的对象设置 VoxelGIData.energy 值。
void voxel_gi_set_interior ( RID voxel_gi, bool enable )
为 RID 为 voxel_gi
的对象设置 VoxelGIData.interior 值。
void voxel_gi_set_normal_bias ( RID voxel_gi, float bias )
为 RID 为 voxel_gi
的对象设置 VoxelGIData.normal_bias 值。
void voxel_gi_set_propagation ( RID voxel_gi, float amount )
为 RID 为 voxel_gi
的对象设置 VoxelGIData.propagation 值。
void voxel_gi_set_quality ( VoxelGIQuality quality )
设置渲染时使用的 ProjectSettings.rendering/global_illumination/voxel_gi/quality 值。这个参数是全局的,无法为单独的 VoxelGI 进行设置。
void voxel_gi_set_use_two_bounces ( RID voxel_gi, bool enable )
为 RID 为 voxel_gi
的对象设置 VoxelGIData.use_two_bounces 值。
© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7
.
Built with Sphinx using a theme provided by Read the Docs.