Sky
继承: Resource < RefCounted < Object
使用 Material 定义 3D 环境的背景。
描述
Sky 类使用 Material 来渲染 3D 环境的背景及其通过更新反射/辐射立方体贴图发出的光。
属性
| ||
| ||
枚举
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
根据天空着色器自动选择合适的处理模式。如果着色器使用 TIME
或 POSITION
,这将使用 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
🔗
void set_process_mode(value: ProcessMode)
ProcessMode get_process_mode()
设置从天空生成辐照度贴图的方法。辐照度贴图是一个立方体贴图,具有递增的模糊版本的天空,以对应于不同级别的粗糙度。辐照度贴图的计算成本很高。有关选项,请参阅 ProcessMode。
RadianceSize radiance_size = 3
🔗
void set_radiance_size(value: RadianceSize)
RadianceSize get_radiance_size()
该 Sky 的辐照度贴图大小。辐射度贴图尺寸越大,来自 Sky 的照明就越详细。
取值见 RadianceSize 常量。
注意:某些硬件在使用较高的辐照度大小,尤其是 RADIANCE_SIZE_512 及以上时,会遇到问题。请仅在高端硬件上使用如此高的值。
用于绘制该背景的 Material。可以是 PanoramaSkyMaterial、ProceduralSkyMaterial、PhysicalSkyMaterial,如果你想使用自定义着色器也可以是 ShaderMaterial。