ProceduralSkyMaterial

继承: Material < Resource < RefCounted < Object

Sky资源定义简单天空的材质。

描述

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

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

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

属性

float

energy_multiplier

1.0

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


属性说明

float energy_multiplier = 1.0 🔗

  • void set_energy_multiplier(value: float)

  • float get_energy_multiplier()

天空的整体亮度乘数。更高的值会导致更亮的天空。


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

  • void set_ground_bottom_color(value: Color)

  • Color get_ground_bottom_color()

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


float ground_curve = 0.02 🔗

  • void set_ground_curve(value: float)

  • float get_ground_curve()

ground_horizon_color消失在ground_bottom_color的速度有多快。


float ground_energy_multiplier = 1.0 🔗

  • void set_ground_energy_multiplier(value: float)

  • float get_ground_energy_multiplier()

底色乘数。较高的值将使地面更亮。


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

  • void set_ground_horizon_color(value: Color)

  • Color get_ground_horizon_color()

地平线上地面的颜色。与ground_bottom_color混合。


Texture2D sky_cover 🔗

要使用的天空覆盖纹理。该纹理必须使用等矩形投影(类似于PanoramaSkyMaterial)。纹理的颜色将添加到现有天空颜色中,并乘以sky_energy_multipliersky_cover_modulate。这主要适合在夜间显示星星,但也可以用于显示白天或晚上的云(具有non-physically-accurate外观)。


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

  • void set_sky_cover_modulate(value: Color)

  • Color get_sky_cover_modulate()

应用于sky_cover纹理的色调。这可用于独立于天空能量更改天空覆盖的颜色或不透明度,这对于白天/夜晚或天气转换很有用。仅当纹理在sky_cover中定义时才有效。


float sky_curve = 0.15 🔗

  • void set_sky_curve(value: float)

  • float get_sky_curve()

sky_horizon_color消失在sky_top_color的速度有多快。


float sky_energy_multiplier = 1.0 🔗

  • void set_sky_energy_multiplier(value: float)

  • float get_sky_energy_multiplier()

天空颜色的乘数。更高的值将使天空更亮。


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

  • void set_sky_horizon_color(value: Color)

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

  • Color get_sky_top_color()

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


float sun_angle_max = 30.0 🔗

  • void set_sun_angle_max(value: float)

  • float get_sun_angle_max()

离太阳中心完全消失的距离。


float sun_curve = 0.15 🔗

  • void set_sun_curve(value: float)

  • float get_sun_curve()

太阳在太阳盘边缘和[member sun_angle_max之间消失的速度有多快。


bool use_debanding = true 🔗

  • void set_use_debanding(value: bool)

  • bool get_use_debanding()

如果true,则启用去色带。去色带会增加少量噪音,这有助于减少天空颜色平滑变化带来的色带。