From ebe7f80bcf54189cc51a15bf17b99293b6ff57a3 Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Tue, 22 Sep 2026 09:26:53 +0800 Subject: feat(desktop): P26 夜晚冷月光 veil(纯渲染层)+ 灯笼光晕径向无方斑回归 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/LivingVillage.Desktop/M6Presentation.fs | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/LivingVillage.Desktop/M6Presentation.fs') diff --git a/src/LivingVillage.Desktop/M6Presentation.fs b/src/LivingVillage.Desktop/M6Presentation.fs index 90d2e65..825847a 100644 --- a/src/LivingVillage.Desktop/M6Presentation.fs +++ b/src/LivingVillage.Desktop/M6Presentation.fs @@ -65,6 +65,18 @@ module M6Presentation = let goldenVeilAlpha (tick: int64) : int = int (150.0f * transitionWarmth tick) + /// Cool moonlight wash applied as a premultiplied veil over the finished night scene. + /// Multiplicative night tint can only darken, so this additive cool layer is what makes deep + /// night read moon-blue. It is zero whenever the sun lights the scene (blend 0) and is + /// suppressed through the warm dawn/dusk windows (warmth), so it never competes with the + /// golden veil. Purely desktop render state; the Kernel never sees it. + let moonlightRgb : int * int * int = (120, 170, 235) + + let moonlightVeilAlpha (tick: int64) : int = + let blend = lightingBlend tick + let warmth = transitionWarmth tick + int (72.0f * blend * (1.0f - warmth)) + let private lerp (a: int) (b: int) (blend: float32) : int = a + int (float32 (b - a) * blend) -- cgit v1.2.3