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
@@ -40,24 +40,23 @@ namespace ProjectM.Client
}
}
void Update()
void Update()
{
float t = Time.time;
// caustics slowly drift across the seabed
if (_caustics != null)
_caustics.Rotate(0f, causticsSpinDegPerSec * Time.deltaTime, 0f, Space.World);
if (_beacon != null)
_beacon.intensity = _beaconBase * (1f
+ beaconFlickerAmount * Mathf.Sin(t * 7.3f)
+ beaconFlickerAmount * 0.5f * Mathf.Sin(t * 17.1f));
// readability law: STEADY = true light. The warm beacon is left unmodulated (steady) on purpose.
// FLICKER = false/counterfeit light -> the cold gloam pools gutter with organic Perlin flicker,
// so "ours vs the deep's" reads through cadence even with hue/value removed.
if (_flora != null)
for (int i = 0; i < _flora.Length; i++)
{
float phase = i * 1.7f;
_flora[i].intensity = _floraBase[i]
* (1f + floraPulseAmount * Mathf.Sin(t * floraPulseSpeed + phase));
float phase = i * 3.1f;
float flick = 0.55f + 0.45f * Mathf.PerlinNoise(t * floraPulseSpeed * 1.8f + phase, phase * 0.7f);
_flora[i].intensity = _floraBase[i] * flick;
}
}
}