Up to date

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

PhysicalSkyMaterial

Inherits: Material < Resource < RefCounted < Object

Sky Material used for a physically based sky.

Description

The PhysicalSkyMaterial uses the Preetham analytic daylight model to draw a sky based on physical properties. This results in a substantially more realistic sky than the ProceduralSkyMaterial, but it is slightly slower and less flexible.

The PhysicalSkyMaterial only supports one sun. The color, energy, and direction of the sun are taken from the first DirectionalLight3D in the scene tree.

As it is based on a daylight model, the sky fades to black as the sunset ends. If you want a full day/night cycle, you will have to add a night sky by converting this to a ShaderMaterial and adding a night sky directly into the resulting shader.

Properties

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


Property Descriptions

float energy_multiplier = 1.0

  • void set_energy_multiplier ( float value )

  • float get_energy_multiplier ( )

The sky’s overall brightness multiplier. Higher values result in a brighter sky.


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

  • void set_ground_color ( Color value )

  • Color get_ground_color ( )

Modulates the Color on the bottom half of the sky to represent the ground.


float mie_coefficient = 0.005

  • void set_mie_coefficient ( float value )

  • float get_mie_coefficient ( )

Controls the strength of Mie scattering for the sky. Mie scattering results from light colliding with larger particles (like water). On earth, Mie scattering results in a whitish color around the sun and horizon.


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

  • void set_mie_color ( Color value )

  • Color get_mie_color ( )

Controls the Color of the Mie scattering effect. While not physically accurate, this allows for the creation of alien-looking planets.


float mie_eccentricity = 0.8

  • void set_mie_eccentricity ( float value )

  • float get_mie_eccentricity ( )

Controls the direction of the Mie scattering. A value of 1 means that when light hits a particle it’s passing through straight forward. A value of -1 means that all light is scatter backwards.


Texture2D night_sky

Texture2D for the night sky. This is added to the sky, so if it is bright enough, it may be visible during the day.


float rayleigh_coefficient = 2.0

  • void set_rayleigh_coefficient ( float value )

  • float get_rayleigh_coefficient ( )

Controls the strength of the Rayleigh scattering. Rayleigh scattering results from light colliding with small particles. It is responsible for the blue color of the sky.


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

  • void set_rayleigh_color ( Color value )

  • Color get_rayleigh_color ( )

Controls the Color of the Rayleigh scattering. While not physically accurate, this allows for the creation of alien-looking planets. For example, setting this to a red Color results in a Mars-looking atmosphere with a corresponding blue sunset.


float sun_disk_scale = 1.0

  • void set_sun_disk_scale ( float value )

  • float get_sun_disk_scale ( )

Sets the size of the sun disk. Default value is based on Sol’s perceived size from Earth.


float turbidity = 10.0

  • void set_turbidity ( float value )

  • float get_turbidity ( )

Sets the thickness of the atmosphere. High turbidity creates a foggy-looking atmosphere, while a low turbidity results in a clearer atmosphere.


bool use_debanding = true

  • void set_use_debanding ( bool value )

  • bool get_use_debanding ( )

If true, enables debanding. Debanding adds a small amount of noise which helps reduce banding that appears from the smooth changes in color in the sky.