Skip to content

TimeOfDay ​

Controls the day/night cycle. It positions the sun for the selected latitude, places the moon opposite the sun, rotates the star panorama, and fades stars in during twilight. SkySystem.update(dt) advances the clock.

Properties ​

autoAdvanceSecondsPerDay ​

Type: number
Default: 600
Units: seconds

Sets the real-time duration of one simulated day. 0 pauses the clock and preserves a direction set with sun.setFromAngles().


azimuth ​

Type: number
Default: 0
Units: degrees

Rotates the sun path, moon, and stars around the world's vertical axis. Use it to align the sky with your scene.


latitude ​

Type: number
Default: 45
Units: degrees

Tilts the sun and moon arcs and the axis the stars turn about. 0 puts the noon sun straight overhead; 45 peaks it halfway up; 90 sends the sun, moon, and stars circling parallel to the horizon. Clamped to −90–90.


moonAmbient.value ​

Type: uniform<float>
Default: 0.015
Units: -

Scales the moon's ambient contribution to the night sky. Typical range: 0–1.


moonAngularSize.value ​

Type: uniform<float>
Default: 0.0003
Units: -

Sets the angular size of the moon disc, measured as 1 - cos θ. Same convention as sun.discSize.


moonColor.value ​

Type: uniform<color>
Default: (0.7, 0.78, 0.95)
Units: linear RGB

Tints the moon disc, the sky ambient it casts, and the moonlight on cloud edges.


moonDiscBrightness.value ​

Type: uniform<float>
Default: 9.0
Units: -

Scales the moon disc brightness in addition to moonIntensity. It does not affect moonlight on the sky or clouds.


moonIntensity.value ​

Type: uniform<float>
Default: 1.0
Units: -

Scales everything the moon lights: the disc, the sky ambient, and the light on cloud edges. All three also scale with the moon's lit fraction, so a sliver moon stays dim on its own.


moonPhase.value ​

Type: uniform<float>
Default: 0.5
Units: -

Sets the moon's phase: 0 is new and dark, 0.5 is full, 1 is new again. Phase changes the disc's lit shape and brightness but not its position.


time.value ​

Type: uniform<float>
Default: 0.5
Units: -

Time within the day, from 0 to 1: 0 is midnight, 0.25 sunrise, 0.5 noon, and 0.75 sunset. Assign a value directly to jump to that time.

Driven Uniforms ​

The system updates moonDirection, skyDarkness, starRotation, moonPhaseIllumination, and moonPhaseTrig each frame. Treat these uniforms as read-only.

The sun rises due east at time = 0.25, reaches 90° − latitude at noon, and sets due west. The model does not include seasons, so the path is the same each day. Stars rotate around the same celestial pole. The moon remains opposite the sun, reaching its highest point at midnight.

Methods ​

applyParams(params) ​

Writes any subset of PartialTimeOfDayParams in one call. Omitted fields are left unchanged.

Returns: void

typescript
sky.timeOfDay.applyParams({
  time: 0.85,
  latitude: 60,
  azimuth: 120,
  moon: { phase: 0.25, intensity: 0.2 },
});

toParams() ​

Returns a new TimeOfDayParams containing the current clock, sky orientation, and moon settings. Pass it to applyParams to restore the state, or store it in a preset's time block.

Returns: TimeOfDayParams

typescript
const saved = sky.timeOfDay.toParams();
sky.timeOfDay.applyParams({ time: 0.1 });
sky.timeOfDay.applyParams(saved); // back to where it was

Types ​

TimeOfDayParams ​

Every field is required — what toParams() returns and the shape of a preset's time block.

Moon fields nest under moon and drop the prefix: phase writes the moonPhase uniform above, intensity writes moonIntensity, and so on.

typescript
interface TimeOfDayParams {
  // 0 = midnight, 0.5 = noon. Wrapped to [0, 1)
  time: number;
  // real seconds per simulated day; 0 pauses the clock
  autoAdvanceSecondsPerDay: number;
  // observer latitude in degrees, clamped to [-90, 90]
  latitude: number;
  // compass rotation of the celestial sphere, in degrees
  azimuth: number;
  moon: MoonParams;
}

MoonParams ​

typescript
interface MoonParams {
  // 0 = new, 0.5 = full, 1 = new again
  phase: number;
  // master brightness over disc, cloud key, and sky ambient
  intensity: number;
  // disc-only brightness, stacking on `intensity`
  discBrightness: number;
  // angular radius as `1 - cos θ`
  angularSize: number;
  // linear RGB — tints disc, sky ambient, and cloud moonlight
  color: THREE.Color;
  // night-sky ambient lift, [0, 1]
  ambient: number;
}

PartialTimeOfDayParams ​

What applyParams accepts: every field optional, including the fields inside moon.

typescript
type PartialTimeOfDayParams = Partial<Omit<TimeOfDayParams, 'moon'>> & {
  moon?: Partial<MoonParams>;
};

Every type here is importable by name:

typescript
import type {
  TimeOfDayParams,
  PartialTimeOfDayParams,
  MoonParams,
} from 'threejs-sky-pro';

See Also ​

Commercial License - All Rights Reserved.