Up to date

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

Sky

继承: Resource < RefCounted < Object

使用 Material 定义 3D 环境的背景。

描述

Sky 类使用 Material 来渲染 3D 环境的背景及其通过更新反射/辐射立方体贴图发出的光。

属性

ProcessMode

process_mode

0

RadianceSize

radiance_size

3

Material

sky_material


枚举

enum RadianceSize:

RadianceSize RADIANCE_SIZE_32 = 0

辐照度纹理尺寸为 32×32 像素。

RadianceSize RADIANCE_SIZE_64 = 1

辐照度纹理尺寸为 64×64 像素。

RadianceSize RADIANCE_SIZE_128 = 2

辐照度纹理尺寸为128×128像素。

RadianceSize RADIANCE_SIZE_256 = 3

辐照度纹理尺寸为 256×256 像素。

RadianceSize RADIANCE_SIZE_512 = 4

辐照度纹理尺寸为 512×512 像素。

RadianceSize RADIANCE_SIZE_1024 = 5

辐照度纹理尺寸为 1024×1024 像素。

RadianceSize RADIANCE_SIZE_2048 = 6

辐照度纹理尺寸为 2048×2048 像素。

RadianceSize RADIANCE_SIZE_MAX = 7

代表 RadianceSize 枚举的大小。


enum ProcessMode:

ProcessMode PROCESS_MODE_AUTOMATIC = 0

根据天空着色器自动选择合适的处理模式。如果着色器使用 TIMEPOSITION,这将使用 PROCESS_MODE_REALTIME。如果着色器使用任何 LIGHT_* 变量或任何自定义 uniform,这将使用 PROCESS_MODE_INCREMENTAL。否则,这默认为 PROCESS_MODE_QUALITY

ProcessMode PROCESS_MODE_QUALITY = 1

使用高质量重要性采样处理辐照度贴图。得到的结果通常比 PROCESS_MODE_REALTIME 的质量更高,但需要花费更多的时间来生成。如果你计划在运行时修改天空,则不应使用。如果你发现反射不够模糊,出现了火花或者萤火虫,请尝试增大 ProjectSettings.rendering/reflections/sky_reflections/ggx_samples

ProcessMode PROCESS_MODE_INCREMENTAL = 2

使用与 PROCESS_MODE_QUALITY 相同的高质量重要性采样来处理辐照度贴图,但更新会占用几帧。帧数由 ProjectSettings.rendering/reflections/sky_reflections/roughness_layers 决定。当需要最高质量的辐照度贴图,但天空更新缓慢时,请使用该选项。

ProcessMode PROCESS_MODE_REALTIME = 3

使用快速过滤算法处理辐射度贴图。一般来说,这会导致质量较低,但运行时间会大大加快。如果需要更好的质量,但仍需要每帧更新天空,请考虑开启 ProjectSettings.rendering/reflections/sky_reflections/fast_filter_high_quality

注意:快速过滤算法被限制为 256x256 立方体贴图,因此必须将 radiance_size 设置为 RADIANCE_SIZE_256。否则会输出警告并忽略覆盖的辐射度大小。


属性说明

ProcessMode process_mode = 0

设置从天空生成辐照度贴图的方法。辐照度贴图是一个立方体贴图,具有递增的模糊版本的天空,以对应于不同级别的粗糙度。辐照度贴图的计算成本很高。有关选项,请参阅 ProcessMode


RadianceSize radiance_size = 3

Sky 的辐照度贴图大小。辐射度贴图尺寸越大,来自 Sky 的照明就越详细。

取值见 RadianceSize 常量。

注意:某些硬件在使用较高的辐照度大小,尤其是 RADIANCE_SIZE_512 及以上时,会遇到问题。请仅在高端硬件上使用如此高的值。


Material sky_material

用于绘制该背景的 Material。可以是 PanoramaSkyMaterialProceduralSkyMaterialPhysicalSkyMaterial,如果你想使用自定义着色器也可以是 ShaderMaterial