Sun
Controls the sun's direction, brightness, color, and apparent size. The sky, clouds, and god rays share these values.
Properties
azimuthDeg
Type: number (read-only)
Units: degrees
Current compass azimuth, from -180 to 180 degrees. 0 points toward +Z and 90 toward +X. setFromAngles uses the same convention.
elevationDeg
Type: number (read-only)
Units: degrees
Current elevation, from -90 to 90 degrees. 0 is the horizon and 90 is directly overhead. setFromAngles uses the same convention.
color.value
Type: uniform<color>
Default: (1.0, 0.95, 0.85)
Units: linear RGB
Sets the sun's color before the atmosphere absorbs any of it. The default is a warm white.
Sunset reddening comes from the atmosphere rather than from here, so leave this near white unless the scene calls for a deliberately tinted star.
direction.value
Type: uniform<vec3>
Default: -
Units: unit vector
Points from the scene toward the sun, in world space.
The day/night clock updates this value when timeOfDay.time, latitude, or azimuth changes. To preserve a direction set with setFromAngles(), pause the clock with autoAdvanceSecondsPerDay = 0.
discSize.value
Type: uniform<float>
Default: 0.0003
Units: -
Sets the angular size of the sun disc, measured as 1 - cos θ. The default radius is approximately 1.4 degrees. Typical range: 0.00005–0.005.
intensity.value
Type: uniform<float>
Default: 6.6
Units: -
Current sun radiance after the horizon fade is applied to peakIntensity.
The driver overwrites this every frame. Set peakIntensity instead.
peakIntensity
Type: number
Default: 6.6
Units: -
Sets the sun's full-daylight radiance. intensity.value fades down from this value as the sun sets.
Not a uniform; assign it directly. Passing intensity to applyParams writes this field.
Methods
applyParams(params)
Writes any subset of SunParams in one call. Omitted fields are left unchanged.
You may pass elevation or azimuth independently; the omitted angle remains unchanged.
Returns: void
sky.sun.applyParams({
intensity: 18.0,
color: new THREE.Color(1.0, 0.9, 0.7),
discSize: 0.0005,
});setFromAngles(elevationDeg, azimuthDeg)
Sets the direction from spherical angles.
| Param | Type | Required | Description |
|---|---|---|---|
elevationDeg | number | required | Degrees. 0 is the horizon, 90 straight overhead. |
azimuthDeg | number | required | Degrees. 0 faces +Z, 90 faces +X. |
Returns: void
sky.sun.setFromAngles(35, 120);toParams()
Returns a new SunParams containing the current position, brightness, color, and disc size. Pass it to applyParams to restore the state, or store it in a preset's sun block.
Returns: SunParams
const saved = sky.sun.toParams();
sky.sun.setFromAngles(80, 0);
sky.sun.applyParams(saved); // back to where it wasTypes
SunParams
Every field is required — toParams() returns all of them, and applyParams takes Partial<SunParams>. This is also the shape of a preset's sun block.
The fields are not a one-to-one map of the properties above. There is no direction: applyParams builds it from the elevation / azimuth pair, and toParams decomposes it back. intensity reads and writes peakIntensity, not the per-frame intensity uniform.
interface SunParams {
// degrees, 0 = horizon, 90 = zenith
elevation: number;
// degrees, 0 = +Z, 90 = +X
azimuth: number;
// writes `peakIntensity`
intensity: number;
// linear RGB
color: THREE.Color;
// angular radius as `1 - cos θ`
discSize: number;
}import type { SunParams } from 'threejs-sky-pro';