Up to date

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

PhysicalSkyMaterial

继承: Material < Resource < RefCounted < Object

通过一组物理属性定义 Sky 资源的天空的材质。

描述

PhysicalSkyMaterial 使用 Preetham 解析日光模型,根据物理属性绘制一个天空。这会产生比 ProceduralSkyMaterial 更加逼真的天空,但速度稍慢且灵活性较差。

PhysicalSkyMaterial 仅支持一个太阳。太阳的颜色、能量、和方向,取自场景树中的第一个 DirectionalLight3D

由于它基于一个日光模型,所以随着日落的结束,天空会逐渐变黑。如果想要一个完整的白天/黑夜循环,则必须通过将其转换为一个 ShaderMaterial,并将一个夜空直接添加到生成的着色器中以添加一个夜空。

属性

float

energy_multiplier

1.0

Color

ground_color

Color(0.1, 0.07, 0.034, 1)

float

mie_coefficient

0.005

Color

mie_color

Color(0.69, 0.729, 0.812, 1)

float

mie_eccentricity

0.8

Texture2D

night_sky

float

rayleigh_coefficient

2.0

Color

rayleigh_color

Color(0.3, 0.405, 0.6, 1)

float

sun_disk_scale

1.0

float

turbidity

10.0

bool

use_debanding

true


属性说明

float energy_multiplier = 1.0

  • void set_energy_multiplier ( float value )

  • float get_energy_multiplier ( )

天空整体亮度的乘数。数值越高,天空就越亮。


Color ground_color = Color(0.1, 0.07, 0.034, 1)

  • void set_ground_color ( Color value )

  • Color get_ground_color ( )

调制天空下半部分的 Color,这部分代表地面。


float mie_coefficient = 0.005

  • void set_mie_coefficient ( float value )

  • float get_mie_coefficient ( )

控制天空中米氏散射的强度。米氏散射是光与较大的粒子(例如水)碰撞的结果。在地球上,米氏散射的结果是太阳和地平线周围的颜色发白。


Color mie_color = Color(0.69, 0.729, 0.812, 1)

  • void set_mie_color ( Color value )

  • Color get_mie_color ( )

控制天空中米氏散射效果的 Color。虽然在物理上并不准确,但可以创造出看上去像的外星球的天空。


float mie_eccentricity = 0.8

  • void set_mie_eccentricity ( float value )

  • float get_mie_eccentricity ( )

控制米氏散射的方向。值为 1 表示当光照到粒子时会直接穿过。值为-1 表示所有的光都是向后散射的。


Texture2D night_sky

用于夜空的 Texture2D。会添加到天空中,所以足够亮的话在白天也可能会看到。


float rayleigh_coefficient = 2.0

  • void set_rayleigh_coefficient ( float value )

  • float get_rayleigh_coefficient ( )

控制瑞利散射的强度。瑞利散射是光与较小粒子碰撞的结果,是天空呈蓝色的原因。


Color rayleigh_color = Color(0.3, 0.405, 0.6, 1)

  • void set_rayleigh_color ( Color value )

  • Color get_rayleigh_color ( )

控制瑞利散射Color。虽然在物理上并不准确,但可以创造出看上去像的外星球的天空。例如,将其设为红色 Color,可以得到火星大气的外观,日落时为蓝色。


float sun_disk_scale = 1.0

  • void set_sun_disk_scale ( float value )

  • float get_sun_disk_scale ( )

设置太阳圆盘的大小。默认值基于从地球对太阳的感知大小。


float turbidity = 10.0

  • void set_turbidity ( float value )

  • float get_turbidity ( )

设置大气的厚度。高浊度会产生雾状外观的大气,而低浊度会产生更清晰的大气。


bool use_debanding = true

  • void set_use_debanding ( bool value )

  • bool get_use_debanding ( )

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