diff --git a/src/Mimir.BufferSmoke/Program.cs b/src/Mimir.BufferSmoke/Program.cs index 4d57a5b..7ab5689 100644 --- a/src/Mimir.BufferSmoke/Program.cs +++ b/src/Mimir.BufferSmoke/Program.cs @@ -639,7 +639,7 @@ static int RunFensalirFieldDslResourceSmoke() NativeHandleKind: "native-ring"); const string source = """ resource id=spectrum key=mimir:resource:native-ring:1234 -texture2d id=blackbody key=aquarium:resource:ramp:blackbody path=D:\WIP4\Projects\Aetheria\Assets\Resources\Ramps\blackbody.png format=Rgba8Unorm +texture2d id=blackbody key=aquarium:resource:ramp:blackbody path=E:\Projects\Aetheria\Assets\Resources\Gradients\blackbody.png format=Rgba8Unorm domain id=mimir:domain:spectrum kind=RollingBuffer min=0,0,0 max=192,1,5 owner=Mimir.Runtime tubespline id=spectrum-trail resource=spectrum domain=mimir:domain:spectrum confidence=0.94 radius=0.02 support=0.02,0.02,5 width=192 height=1 stride=4 columns=1 ramp=blackbody """; @@ -1109,7 +1109,7 @@ static int RunMimirSpectrumUploadSmoke() ramp.Residency == AquariumFieldResourceResidency.GpuResident && ramp.Access == AquariumFieldShaderAccess.ShaderResource && string.Equals(ramp.Format, "Rgba8Unorm", StringComparison.OrdinalIgnoreCase) && - string.Equals(ramp.SourceUri, @"D:\WIP4\Projects\Aetheria\Assets\Resources\Ramps\blackbody.png", StringComparison.OrdinalIgnoreCase) && + string.Equals(ramp.SourceUri, @"E:\Projects\Aetheria\Assets\Resources\Gradients\blackbody.png", StringComparison.OrdinalIgnoreCase) && resource.Height == expectedSourceLaneCapacity * expectedHistoryCapacity && matchingLowerings.All(item => item.ColumnCount == expectedHistoryCount && diff --git a/src/Mimir.Runtime/MimirRuntime.cs b/src/Mimir.Runtime/MimirRuntime.cs index bf64fcc..57622fe 100644 --- a/src/Mimir.Runtime/MimirRuntime.cs +++ b/src/Mimir.Runtime/MimirRuntime.cs @@ -35,7 +35,7 @@ public sealed class MimirRuntime : IAquariumRuntime, IAquariumRuntimeServicesRec private const int DefaultSpectrumSourceLaneCapacity = 8; private const string SpectrumFieldResourceKey = "mimir:resource:spectrum:field-upload"; private const string SpectrumRampResourceKey = "aquarium:resource:ramp:blackbody"; - private const string SpectrumRampTexturePath = @"D:\WIP4\Projects\Aetheria\Assets\Resources\Ramps\blackbody.png"; + private const string SpectrumRampTexturePath = @"E:\Projects\Aetheria\Assets\Resources\Gradients\blackbody.png"; private readonly MimirSynchronizationHub synchronization; private readonly MimirFensalirFieldLowering fieldLowering; private readonly MimirAudioSpectrumAnalyzer spectrumAnalyzer; diff --git a/state/evidence.jsonl b/state/evidence.jsonl index 17eb044..8b4e936 100644 --- a/state/evidence.jsonl +++ b/state/evidence.jsonl @@ -211,3 +211,4 @@ {"ts": "2026-05-28T12:42:24+01:00", "type": "implementation", "status": "ok", "note": "TubeField demo now uses the reservoir/TAA guide path honestly: Fensalir's TubeField pixel shader writes stable field id plus real tube normals into metadata and coverage/confidence into reservoirGuide, so post resolve can validate history with the same spatiotemporal guide surfaces used by other field paths. Live synthetic spectrum demo log at artifacts/runtime/mimir-spectrum-reservoir-demo.log showed 4 planned TubeField packets, 0 deferred, 0 unplanned, 0 truncated."} {"ts": "2026-05-28T12:58:22+01:00", "type": "implementation", "status": "ok", "note": "TubeField render now binds Fensalir's engine blue-noise texture and jitters the tube-local SDF sample inside the generated proxy fragment shader before writing coverage/normals/reservoir guide data. The pass also uses scene depth so opaque generated field geometry resolves by nearest surface instead of draw order. Live demo compiled and planned 4 TubeField packets with 0 deferred/0 truncated; screenshot still shows generated segment structure, so the final smooth tube marcher remains a renderer-quality cut."} {"ts": "2026-05-28T14:00:43+01:00", "type": "decision", "status": "ok", "note": "Tube proof render now uses Blender 5.1 OCIO ACES 2.0 sRGB transform baked into Fensalir post, eight-octave Sonic Ether-style normalized bloom, and an explicit scene-state bit to disable studio background for dark proof scenes. Current proof capture is artifacts/runtime/mimir-single-tube-headless-aces2-sebloom-core-preserve.png; core/halo are close enough to continue, remaining deltas are capsule geometry/cap shading rather than tone-map authority."} +{"ts": "2026-05-28T14:17:52+01:00", "type": "implementation", "status": "ok", "note": "TubeField spectrum material now separates normalized material value from shaped Y amplitude: geometry still applies AmplitudePower for tube height, while radius, blackbody ramp coordinate, and emission use the normalized Catmull-Rom sample, so emission is normalized^2 * scale instead of a double-shaped value. Mimir now declares the live blackbody ramp from E:\\Projects\\Aetheria\\Assets\\Resources\\Gradients\\blackbody.png; spectrum upload smoke passes and the headless verification capture is artifacts/runtime/mimir-spectrum-dashboard-blackbody-material-fixed.png."}