Verify flow feature selection in the state smoke
This commit is contained in:
parent
a655d99bf5
commit
583e16f543
2 changed files with 47 additions and 39 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
Loading…
Reference in a new issue