From b25d9140499be657c746281ed787908d6967ce13 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 16 Jul 2026 20:40:40 +0100 Subject: [PATCH] Capture settled HD temporal witness --- .../PlayMode/GenericWorldCaptureTests.cs | 23 +++++++++++++++---- .../PlayMode/GenericWorldCaptureTests.cs | 23 +++++++++++++++---- docs/aetheria-released-package-witness.md | 12 ++++++++++ scripts/run-aetheria-daemon-world-witness.ps1 | 12 +++++----- 4 files changed, 54 insertions(+), 16 deletions(-) diff --git a/ReleaseConsumerProject/Assets/Tests/PlayMode/GenericWorldCaptureTests.cs b/ReleaseConsumerProject/Assets/Tests/PlayMode/GenericWorldCaptureTests.cs index 253e8a7..144c9bf 100644 --- a/ReleaseConsumerProject/Assets/Tests/PlayMode/GenericWorldCaptureTests.cs +++ b/ReleaseConsumerProject/Assets/Tests/PlayMode/GenericWorldCaptureTests.cs @@ -638,7 +638,9 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests } Assert.That(mapRenderers, Is.Not.Empty, "The live provider prefab has no renderer assigned to its advertised map channel."); - target = new RenderTexture(640, 360, 24, RenderTextureFormat.ARGB32); + const int captureWidth = 1280; + const int captureHeight = 720; + target = new RenderTexture(captureWidth, captureHeight, 24, RenderTextureFormat.ARGB32); camera.targetTexture = target; var cameraRig = cameraObject.AddComponent(); cameraRig.Host = host; @@ -697,11 +699,22 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests var mapCamera = mapCameraObject.AddComponent(); mapCamera.cullingMask = 1 << mapLayer; Assert.That(mapCamera.cullingMask, Is.EqualTo(1 << mapLayer)); - yield return null; + var captureFieldVolume = root.GetComponent(); + Assert.That(captureFieldVolume, Is.Not.Null, + "The generic client did not install its Fields volume lowerer before temporal settling."); + const int temporalSettlingFrames = 128; + var initialCompositeCount = captureFieldVolume.CompositeCount; + var temporalSettlingDeadline = Time.realtimeSinceStartup + 20f; + while (captureFieldVolume.CompositeCount - initialCompositeCount < temporalSettlingFrames && + Time.realtimeSinceStartup < temporalSettlingDeadline) + yield return null; + Assert.That(captureFieldVolume.CompositeCount - initialCompositeCount, + Is.GreaterThanOrEqualTo(temporalSettlingFrames), + "The pilot capture ran before the advertised temporal reconstruction had settled."); camera.Render(); RenderTexture.active = target; - pixels = new Texture2D(640, 360, TextureFormat.RGB24, false); - pixels.ReadPixels(new Rect(0, 0, 640, 360), 0, 0); + pixels = new Texture2D(captureWidth, captureHeight, TextureFormat.RGB24, false); + pixels.ReadPixels(new Rect(0, 0, captureWidth, captureHeight), 0, 0); pixels.Apply(); var pilotChangedPixels = CountChangedPixels(pixels, camera.backgroundColor); MeasureLuminance(pixels, out var pilotAverageLuminance, out var pilotBrightPixelCount); @@ -749,7 +762,7 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests Assert.That(particleMapCameraIsolated, Is.True, "The map camera executed the pilot-only field-particle pass."); RenderTexture.active = target; - pixels.ReadPixels(new Rect(0, 0, 640, 360), 0, 0); + pixels.ReadPixels(new Rect(0, 0, captureWidth, captureHeight), 0, 0); pixels.Apply(); var mapChangedPixels = CountChangedPixels(pixels, mapCamera.backgroundColor); Assert.That(mapChangedPixels, Is.GreaterThan(25), "The map-only camera rendered no provider-authored map glyph pixels."); diff --git a/TestProject/Assets/Tests/PlayMode/GenericWorldCaptureTests.cs b/TestProject/Assets/Tests/PlayMode/GenericWorldCaptureTests.cs index 253e8a7..144c9bf 100644 --- a/TestProject/Assets/Tests/PlayMode/GenericWorldCaptureTests.cs +++ b/TestProject/Assets/Tests/PlayMode/GenericWorldCaptureTests.cs @@ -638,7 +638,9 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests } Assert.That(mapRenderers, Is.Not.Empty, "The live provider prefab has no renderer assigned to its advertised map channel."); - target = new RenderTexture(640, 360, 24, RenderTextureFormat.ARGB32); + const int captureWidth = 1280; + const int captureHeight = 720; + target = new RenderTexture(captureWidth, captureHeight, 24, RenderTextureFormat.ARGB32); camera.targetTexture = target; var cameraRig = cameraObject.AddComponent(); cameraRig.Host = host; @@ -697,11 +699,22 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests var mapCamera = mapCameraObject.AddComponent(); mapCamera.cullingMask = 1 << mapLayer; Assert.That(mapCamera.cullingMask, Is.EqualTo(1 << mapLayer)); - yield return null; + var captureFieldVolume = root.GetComponent(); + Assert.That(captureFieldVolume, Is.Not.Null, + "The generic client did not install its Fields volume lowerer before temporal settling."); + const int temporalSettlingFrames = 128; + var initialCompositeCount = captureFieldVolume.CompositeCount; + var temporalSettlingDeadline = Time.realtimeSinceStartup + 20f; + while (captureFieldVolume.CompositeCount - initialCompositeCount < temporalSettlingFrames && + Time.realtimeSinceStartup < temporalSettlingDeadline) + yield return null; + Assert.That(captureFieldVolume.CompositeCount - initialCompositeCount, + Is.GreaterThanOrEqualTo(temporalSettlingFrames), + "The pilot capture ran before the advertised temporal reconstruction had settled."); camera.Render(); RenderTexture.active = target; - pixels = new Texture2D(640, 360, TextureFormat.RGB24, false); - pixels.ReadPixels(new Rect(0, 0, 640, 360), 0, 0); + pixels = new Texture2D(captureWidth, captureHeight, TextureFormat.RGB24, false); + pixels.ReadPixels(new Rect(0, 0, captureWidth, captureHeight), 0, 0); pixels.Apply(); var pilotChangedPixels = CountChangedPixels(pixels, camera.backgroundColor); MeasureLuminance(pixels, out var pilotAverageLuminance, out var pilotBrightPixelCount); @@ -749,7 +762,7 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests Assert.That(particleMapCameraIsolated, Is.True, "The map camera executed the pilot-only field-particle pass."); RenderTexture.active = target; - pixels.ReadPixels(new Rect(0, 0, 640, 360), 0, 0); + pixels.ReadPixels(new Rect(0, 0, captureWidth, captureHeight), 0, 0); pixels.Apply(); var mapChangedPixels = CountChangedPixels(pixels, mapCamera.backgroundColor); Assert.That(mapChangedPixels, Is.GreaterThan(25), "The map-only camera rendered no provider-authored map glyph pixels."); diff --git a/docs/aetheria-released-package-witness.md b/docs/aetheria-released-package-witness.md index cd937e6..fe399f8 100644 --- a/docs/aetheria-released-package-witness.md +++ b/docs/aetheria-released-package-witness.md @@ -41,6 +41,18 @@ effectively unchanged while mean neighboring-pixel variation falls from to `0.0531`. This proves the temporal history is accumulating and that its bootstrap seed mattered. The remaining cyan/tonemap mismatch is still open. +The cold HD witness in `artifacts/aetheria-daemon-fog-alpha-cold-hd` then +transfers the rebuilt 56,168,970-byte provider bundle +`a829e57731fbe08f4564fa131468148e99f6b4204708ad3e64498885532b5091` +through `SharedFileMapping` and captures after 128 temporal composites at +1280x720. It restores the historical fog history ABI: the temporal pass stores +density directly in alpha, so the composite consumes that density directly +instead of decoding it as the raymarch pass's packed distance/density payload. +The flat grey opacity slabs disappear. The released client test passes in 52.7 +seconds with 238 fog composites and Stardust draws; the pilot camera still +excludes map renderers and the map camera includes them. Remaining visual work +is color/composition parity, not broken fog opacity or an unsettled witness. + Current released-package evidence is in `artifacts/aetheria-daemon-mapped-body-cold`; despite that retained directory name, `runtime-witness.warm.json` is the current passing run. The warm PlayMode test diff --git a/scripts/run-aetheria-daemon-world-witness.ps1 b/scripts/run-aetheria-daemon-world-witness.ps1 index 6cfe2c6..f45e3db 100644 --- a/scripts/run-aetheria-daemon-world-witness.ps1 +++ b/scripts/run-aetheria-daemon-world-witness.ps1 @@ -346,8 +346,8 @@ try { assertions = $facts receipts = @($facts.receipts) screenshotMetrics = [ordered]@{ - width = 640 - height = 360 + width = 1280 + height = 720 encodedSizeBytes = $capture.Length sha256 = (Get-FileHash -LiteralPath $capture.FullName -Algorithm SHA256).Hash.ToLowerInvariant() mapEncodedSizeBytes = $mapCapture.Length @@ -360,16 +360,16 @@ try { path = $capture.Name sha256 = (Get-FileHash -LiteralPath $capture.FullName -Algorithm SHA256).Hash.ToLowerInvariant() sizeBytes = $capture.Length - width = 640 - height = 360 + width = 1280 + height = 720 }, [ordered]@{ kind = "unity-map-channel-png" path = $mapCapture.Name sha256 = (Get-FileHash -LiteralPath $mapCapture.FullName -Algorithm SHA256).Hash.ToLowerInvariant() sizeBytes = $mapCapture.Length - width = 640 - height = 360 + width = 1280 + height = 720 }, [ordered]@{ kind = "unity-test-results"