Client: StagingAmbiance — steady beacon, gloam flicker (readability cadence)

Beacon left unmodulated (steady=true light); cold flora gutter on Perlin flicker
(flicker=false light) so the warm/cold read survives with hue removed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-14 21:42:32 -07:00
parent 693f70308a
commit 9ca27e626a
@@ -44,20 +44,19 @@ namespace ProjectM.Client
{ {
float t = Time.time; float t = Time.time;
// caustics slowly drift across the seabed
if (_caustics != null) if (_caustics != null)
_caustics.Rotate(0f, causticsSpinDegPerSec * Time.deltaTime, 0f, Space.World); _caustics.Rotate(0f, causticsSpinDegPerSec * Time.deltaTime, 0f, Space.World);
if (_beacon != null) // readability law: STEADY = true light. The warm beacon is left unmodulated (steady) on purpose.
_beacon.intensity = _beaconBase * (1f // FLICKER = false/counterfeit light -> the cold gloam pools gutter with organic Perlin flicker,
+ beaconFlickerAmount * Mathf.Sin(t * 7.3f) // so "ours vs the deep's" reads through cadence even with hue/value removed.
+ beaconFlickerAmount * 0.5f * Mathf.Sin(t * 17.1f));
if (_flora != null) if (_flora != null)
for (int i = 0; i < _flora.Length; i++) for (int i = 0; i < _flora.Length; i++)
{ {
float phase = i * 1.7f; float phase = i * 3.1f;
_flora[i].intensity = _floraBase[i] float flick = 0.55f + 0.45f * Mathf.PerlinNoise(t * floraPulseSpeed * 1.8f + phase, phase * 0.7f);
* (1f + floraPulseAmount * Mathf.Sin(t * floraPulseSpeed + phase)); _flora[i].intensity = _floraBase[i] * flick;
} }
} }
} }