feat(sky): pack-gated procedural night sky replacing the stretched DAT star layer; register IA-26
User-directed enhancement ('I want the night sky to look very good'):
retail's star layer is one small texture stretched over a 10-poly dome
cap, so stars smear regardless of source-image quality. With the
Atmospheric render pack active, sky.frag now renders the star layer
(GfxObj 0x010015EF, identical in all 20 Dereth day groups) as a fully
procedural sky computed from the view direction: hash-derived stars on
a cube-face grid in three density tiers plus sparse diffraction-spiked
standouts, sized in SCREEN pixels via derivatives so they stay crisp at
any resolution and FOV, over the user-approved 0.4-1.3% cool mottle
(gen_starfield2.py seed 11, approved 2026-08-23). The draw is forced
additive; the day/night fade rides the star layer's existing retail
lighting product so the schedule matches the authored keyframes. Pack
inactive = retail look byte-untouched.
EnhancedNightSkyRuleTests pins the uParamA gate, the exact star-layer
id, the forced-additive draw, and the pack-runtime wiring; sky shader
SPIR-V recompiled and re-pinned. Hermetic App suite green.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
6d8f165d38
commit
508cefdeb1
11 changed files with 302 additions and 11 deletions
|
|
@ -320,6 +320,20 @@ internal sealed class FrameRootCompositionPhase
|
|||
renderPackDiagnostics.BindOwned(renderPackController));
|
||||
}
|
||||
atmosphericInputs = new AcDream.App.Rendering.Packs.AtmosphericFrameInputState();
|
||||
|
||||
// Enhanced night sky (register IA-26, user-directed 2026-08-23):
|
||||
// while the Atmospheric pack is the active runtime, SkyRenderer
|
||||
// swaps the DAT star layer for sky.frag's procedural
|
||||
// view-direction starfield. Same-composition lifetimes on both
|
||||
// sides, and the delegate re-reads ActiveRuntime per draw, so a
|
||||
// pack activate/deactivate flips the sky the same frame.
|
||||
if (live.SkyRenderer is { } skyForNightSky)
|
||||
{
|
||||
var nightSkyController = renderPackController;
|
||||
skyForNightSky.EnhancedNightSkyActive = () =>
|
||||
nightSkyController.ActiveRuntime?.Descriptor.Id
|
||||
== AcDream.App.Rendering.Packs.BuiltInAtmosphericRenderPack.Id;
|
||||
}
|
||||
}
|
||||
|
||||
var renderWeatherFrame = new RenderWeatherFrameController(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue