Up to date

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

ProceduralSkyMaterial

继承: Material < Resource < RefCounted < Object

一种材质,可为 Sky 资源定义简单天空。

描述

ProceduralSkyMaterial 提供了一种通过为太阳、天空、和地面定义程序参数,来快速创建一个有效背景的方法。天空和地面由主颜色、地平线颜色、以及在它们之间插值的缓动曲线定义。太阳通过天空中的位置、颜色、以及缓动曲线结束时距太阳的最大角度来描述。因此,最大角度定义了天空中太阳的大小。

ProceduralSkyMaterial 支持最多 4 个太阳,它们使用场景中前四个 DirectionalLight3D 节点的颜色、能量、方向、和角距离。这意味着太阳由其相应的 DirectionalLight3D 的属性单独定义,并由 sun_angle_maxsun_curve 全局定义。

ProceduralSkyMaterial 使用轻量级着色器来绘制天空,因此适合实时更新。这使得它成为简单、低计算成本且不切实际的天空的绝佳选择。如果你需要更真实的程序化选项,请使用 PhysicalSkyMaterial

属性

Color

ground_bottom_color

Color(0.2, 0.169, 0.133, 1)

float

ground_curve

0.02

float

ground_energy_multiplier

1.0

Color

ground_horizon_color

Color(0.6463, 0.6558, 0.6708, 1)

Texture2D

sky_cover

Color

sky_cover_modulate

Color(1, 1, 1, 1)

float

sky_curve

0.15

float

sky_energy_multiplier

1.0

Color

sky_horizon_color

Color(0.6463, 0.6558, 0.6708, 1)

Color

sky_top_color

Color(0.385, 0.454, 0.55, 1)

float

sun_angle_max

30.0

float

sun_curve

0.15

bool

use_debanding

true


属性说明

Color ground_bottom_color = Color(0.2, 0.169, 0.133, 1)

  • void set_ground_bottom_color ( Color value )

  • Color get_ground_bottom_color ( )

地面底部的颜色。会与 ground_horizon_color 混合。


float ground_curve = 0.02

  • void set_ground_curve ( float value )

  • float get_ground_curve ( )

ground_horizon_color 渐变到 ground_bottom_color 的速度。


float ground_energy_multiplier = 1.0

  • void set_ground_energy_multiplier ( float value )

  • float get_ground_energy_multiplier ( )

地面颜色的乘数。值越高,地面越亮。


Color ground_horizon_color = Color(0.6463, 0.6558, 0.6708, 1)

  • void set_ground_horizon_color ( Color value )

  • Color get_ground_horizon_color ( )

地面在地平线处的颜色。会与 ground_bottom_color 混合。


Texture2D sky_cover

要使用的天空覆盖纹理。这个纹理必须使用一个等角投影(类似于PanoramaSkyMaterial)。 该纹理的颜色将被添加到现有的天空颜色中,并将乘以 sky_energy_multipliersky_cover_modulate。这主要适用于显示夜晚的星星,但也可以用来显示白天或夜晚的云彩(具有非物理精确性的外观)。


Color sky_cover_modulate = Color(1, 1, 1, 1)

  • void set_sky_cover_modulate ( Color value )

  • Color get_sky_cover_modulate ( )

应用于 sky_cover 纹理的色调。可用于改变天空覆盖的颜色或不透明度,不受天空能量的影响,对于昼夜转换或天气转换很有用。只有在 sky_cover 中定义了纹理时才有效。


float sky_curve = 0.15

  • void set_sky_curve ( float value )

  • float get_sky_curve ( )

sky_horizon_color 渐变到 sky_top_color 的速度。


float sky_energy_multiplier = 1.0

  • void set_sky_energy_multiplier ( float value )

  • float get_sky_energy_multiplier ( )

天空颜色的倍数。值越高天空越亮。


Color sky_horizon_color = Color(0.6463, 0.6558, 0.6708, 1)

  • void set_sky_horizon_color ( Color value )

  • Color get_sky_horizon_color ( )

天空在地平线处的颜色。会与 sky_top_color 混合。


Color sky_top_color = Color(0.385, 0.454, 0.55, 1)

  • void set_sky_top_color ( Color value )

  • Color get_sky_top_color ( )

天空在顶部的颜色。会与 sky_horizon_color 混合。


float sun_angle_max = 30.0

  • void set_sun_angle_max ( float value )

  • float get_sun_angle_max ( )

太阳完全淡出消失的位置与太阳中心的距离。


float sun_curve = 0.15

  • void set_sun_curve ( float value )

  • float get_sun_curve ( )

在太阳圆盘边缘和 sun_angle_max 之间,太阳消失得有多快。


bool use_debanding = true

  • void set_use_debanding ( bool value )

  • bool get_use_debanding ( )

如果为 true,则启用去色带。去色带会增加少量噪点,这有助于减少天空中颜色的平滑变化而出现的色带。