NatureGL Skyv1.1.0

Reference

Quality levels

Four tiers, from integrated laptop GPUs to 4K desktops. Every field is overridable at runtime.

js
const sky = await SkySystem.create({ renderer, scene, camera, quality: 'medium' });
sky.setQualityLevel('ultra');
sky.setQualityLevel('high', { marchScale: 0.66, raySteps: 16 });   // tier + overrides
sky.qualitySettings;   // the effective settings

#At a glance

TierCloud march resMarch / light stepsShadow mapEnv map · PMREM cubeEnv refreshGod raysBloom / MSAA
low1/332 / 4256² @ 2 Hz128×64 · 321 Hzoffoff / 0
medium1/244 / 5256² @ 5 Hz256×128 · 642 Hz (2 slices)8 stepson / 2
high1/256 / 5512² @ 10 Hz512×256 · 1284 Hz (4 slices)12 stepson / 4
ultra3/480 / 61024² @ 20 Hz1024×512 · 2568 Hz (4 slices)16 stepson / 4

Resolutions are relative to the drawing buffer. The env bake is spread over "slices" frames so it never spikes.

#Every field

Fieldlowmediumhighultra
marchScale0.340.50.50.75Cloud march res / drawing buffer
historyScale0.50.7511TAA history res / drawing buffer
marchSteps32445680Primary march budget
lightSteps4556Self-shadow steps per sample
shadowSize2562565121024Shadow map texels per side
shadowSteps8101216March steps per shadow texel
shadowInterval0.50.20.10.05Seconds between shadow bakes (dynamic)
envSize1282565121024Equirect width (PMREM cube = width / 4)
envSteps16243248Cloud steps in the env bake
envInterval1.00.50.250.12Seconds between env + PMREM refreshes (dynamic)
envSlices1244Frames one env bake is spread over
pmremSamples324864128GGX samples per texel (three.js default 256)
godRaysoffonononPost-pass god rays
raySteps081216God-ray / fog march steps
bloomoffonononPost-pass bloom + shafts
msaa0244Post-pass scene target samples

#Pick a starting tier

TargetTier
Integrated GPUs, phones, 4K at pixel ratio 2low
Mid-range laptopsmedium
Apple M-series, discrete desktop GPUs at 1080p–1440phigh
Stills, trailers, 4K postersultra