PhysicalSkyMaterial

继承: Material < Resource < RefCounted < Object

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

描述

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

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

属性

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(value: float)

  • float get_energy_multiplier()

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


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

  • void set_ground_color(value: Color)

  • Color get_ground_color()

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


float mie_coefficient = 0.005 🔗

  • void set_mie_coefficient(value: float)

  • float get_mie_coefficient()

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


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

  • void set_mie_color(value: Color)

  • Color get_mie_color()

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


float mie_eccentricity = 0.8 🔗

  • void set_mie_eccentricity(value: float)

  • float get_mie_eccentricity()

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


Texture2D night_sky 🔗

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


float rayleigh_coefficient = 2.0 🔗

  • void set_rayleigh_coefficient(value: float)

  • float get_rayleigh_coefficient()

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


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

  • void set_rayleigh_color(value: Color)

  • Color get_rayleigh_color()

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


float sun_disk_scale = 1.0 🔗

  • void set_sun_disk_scale(value: float)

  • float get_sun_disk_scale()

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


float turbidity = 10.0 🔗

  • void set_turbidity(value: float)

  • float get_turbidity()

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


bool use_debanding = true 🔗

  • void set_use_debanding(value: bool)

  • bool get_use_debanding()

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