Verify flow feature selection in the state smoke

This commit is contained in:
Meta Vens 2026-07-19 02:02:52 +01:00
commit 583e16f543
2 changed files with 47 additions and 39 deletions

View file

@ -181,6 +181,53 @@ await using (var node = await AetheriaStateNode.OpenAsync(statePath, "aetheria-s
throw new InvalidOperationException(
$"Playable world did not publish the native camera and environment contract: {string.Join("; ", playableWorldMismatches)}");
}
var gravityFog = playableWorld.Children.Single(component =>
component.Id == "aetheria.daemon.game.world.gravity-fog");
var stardust = playableWorld.Children.Single(component =>
component.Id == "aetheria.daemon.game.world.stardust");
if (!gravityFog.Props["features"].Split(';').Contains("flow.value3d", StringComparer.Ordinal) ||
!stardust.Props["features"].Split(';').Contains("flow.value3d", StringComparer.Ordinal))
{
throw new InvalidOperationException("Aetheria's default render settings did not select smooth Value3D flow.");
}
daemonFrame.RenderSettings = new AetheriaRuntimeDaemonRenderSettings(
default,
default,
default,
0,
0,
0,
0,
0,
0,
useValue3DFlow: false);
var triangleSurface = AetheriaRuntimeDaemonGameSurfaceBuilder.Build(
daemonFrame,
daemonHealth,
daemonCommandBoundary);
var triangleWorld = triangleSurface.Surface.Root.Children.Single(component =>
component.Id == "aetheria.daemon.game.world");
if (triangleWorld.Children
.Where(component => component.Id is "aetheria.daemon.game.world.gravity-fog" or "aetheria.daemon.game.world.stardust")
.Any(component => component.Props["features"].Split(';').Contains("flow.value3d", StringComparer.Ordinal)))
{
throw new InvalidOperationException("Triangle flow remained opted into the Value3D feature keyword.");
}
daemonFrame.RenderSettings = AetheriaRuntimeDaemonRenderSettings.AetheriaDefault;
var renderAssets = AetheriaRuntimeAssets.ProjectManifest(null);
if (!renderAssets.Assets.Any(asset =>
asset.Ref.AssetKey == "shader.environment.gravity-fog" &&
asset.Ref.Metadata.TryGetValue("unity.volume.feature.flow.value3d.keyword", out var keyword) &&
keyword == "FLOW_VALUE3D") ||
!renderAssets.Assets.Any(asset =>
asset.Ref.AssetKey == "compute.environment.stardust" &&
asset.Ref.Metadata.TryGetValue("unity.particles.feature.flow.value3d.keyword", out var keyword) &&
keyword == "FLOW_VALUE3D"))
{
throw new InvalidOperationException("Aetheria's asset catalog did not map smooth flow to FLOW_VALUE3D.");
}
await node.MutableDocument<AetheriaRuntimeDaemonProviderAdvertisementDocument>(AetheriaRuntimeVerseRecordKeys.DaemonProviderAdvertisement)
.ReplaceAsync(daemonProvider);
await node.MutableDocument<AetheriaRuntimeDaemonHealthDocument>(AetheriaRuntimeVerseRecordKeys.DaemonHealth)

View file

@ -522,40 +522,6 @@ public class DaemonRuntimeDocumentTests
"shader.environment.gravity-fog"));
Assert.IsTrue(ContainsSurfaceProp(surface.Surface.Root, "documentSchema",
AetheriaRuntimeDaemonSchemas.RenderSplatsViewport));
var gravityFog = FindSurfaceComponent(
surface.Surface.Root,
"aetheria.daemon.game.world.gravity-fog");
var stardust = FindSurfaceComponent(
surface.Surface.Root,
"aetheria.daemon.game.world.stardust");
Assert.IsNotNull(gravityFog);
Assert.IsNotNull(stardust);
StringAssert.Contains("flow.value3d", gravityFog!.Props["features"]);
StringAssert.Contains("flow.value3d", stardust!.Props["features"]);
frame.RenderSettings = new AetheriaRuntimeDaemonRenderSettings(
default,
default,
default,
0,
0,
0,
0,
0,
0,
useValue3DFlow: false);
var triangleSurface = AetheriaRuntimeDaemonGameSurfaceBuilder.Build(
frame,
new AetheriaRuntimeDaemonHealthDocument(),
AetheriaRuntimeDaemonCommandBoundaryDocument.Create("test-daemon"));
var triangleFog = FindSurfaceComponent(
triangleSurface.Surface.Root,
"aetheria.daemon.game.world.gravity-fog");
var triangleStardust = FindSurfaceComponent(
triangleSurface.Surface.Root,
"aetheria.daemon.game.world.stardust");
StringAssert.DoesNotContain("flow.value3d", triangleFog!.Props["features"]);
StringAssert.DoesNotContain("flow.value3d", triangleStardust!.Props["features"]);
Assert.IsFalse(ContainsSurfaceValueFragment(surface.Surface.Root, "_Nebula"),
"The semantic Eve surface must not own Unity shader property names.");
Assert.AreEqual(EveEntitySoaViewDocument.SchemaId, portable.Schema);
@ -830,13 +796,8 @@ public class DaemonRuntimeDocumentTests
asset.Ref.Metadata["unity.volume.matrixPort.cameraToWorld"] == "_CamToWorld" &&
asset.Ref.Metadata["unity.volume.quality.bootstrap"] == "ultra" &&
asset.Ref.Metadata["unity.volume.quality.ultra.keyword"] == "ULTRA_QUALITY" &&
asset.Ref.Metadata["unity.volume.feature.flow.value3d.keyword"] == "FLOW_VALUE3D" &&
!asset.Ref.Metadata.ContainsKey("unity.volume.pass.temporal") &&
!asset.Ref.Metadata.ContainsKey("unity.volume.texturePort.history")));
Assert.IsTrue(assetManifest.Assets.Any(asset =>
asset.Ref.AssetKey == "compute.environment.stardust" &&
asset.Ref.Kind == AetheriaRuntimeAssetKinds.ComputeShader &&
asset.Ref.Metadata["unity.particles.feature.flow.value3d.keyword"] == "FLOW_VALUE3D"));
Assert.IsTrue(assetManifest.Assets.Any(asset =>
asset.Ref.AssetKey == "texture.environment.volume-dither" &&
asset.Ref.Kind == AetheriaRuntimeAssetKinds.Texture));