feat(overhaul): port S5 particle cell visibility
Publish the exact completed walk landscape set as the typed retained particle-view product. Apply retail CLandCell membership versus constant-true non-null CEnvCell eligibility while preserving the x87 distance and AP-116 behavior. Delete the null-root terrain visibility reconstruction and the dead drawable-cell point-light feedback chain. Retire AP-117, correct AP-85 and AD-21, and keep directional shadows, building degrade, AP-232, probes, RHI, shaders, and DAT outside this chunk. Automated return: Release 0 warnings/0 errors; Core VFX 111/111; App particle/frame/renderer/terrain 146/146; warmed production allocation 1/1 at 0 B. First official hermetic artifact s5-c1-hermetic-20260904 is preserved at 16759/16760 with only the stale 162-row assertion; after the bounded 161 correction, exact pin 1/1 and fresh s5-c1-hermetic-corrected-20260904 16760/16760. InstalledDat 385 pass, 10 documented failures, 1 documented skip, no new identity. Mutation 1: making EnvCell eligibility set-dependent first failed ParticleSystemTests.cs:553 Assert.True, expected true actual false. Mutation 2: making outdoor eligibility constant true first failed ParticleSystemTests.cs:559 Assert.False, expected false actual true. Mutation 3: feeding the diagnostic union first failed WorldSceneRendererTests.cs:279 HashSet equality, expected [16842755], actual [16843008, 16842755]. Mutation 4: restoring CollectVisibleCells first failed TerrainParticleCellVisibilityTests.cs:37 and named TerrainModernRenderer.cs. Mutation 5: restoring ObserveDrawableCells first failed TerrainParticleCellVisibilityTests.cs:37 and named WorldRenderFrameBuilder.cs. Mutation 6: changing the inclusive boundary from <= to < first failed ParticleSystemTests.cs:519 Assert.True, expected true actual false. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
efb0756190
commit
94a6b5ef39
18 changed files with 352 additions and 269 deletions
|
|
@ -52,9 +52,6 @@ public sealed class WorldRenderFrameBuilderTests
|
|||
in foundation,
|
||||
waitingForLogin: true,
|
||||
activeDayGroup: null);
|
||||
var drawableCells = new HashSet<uint> { 0x01010001u };
|
||||
builder.ObserveDrawableCells(drawableCells);
|
||||
builder.ClearDrawableCells();
|
||||
|
||||
Assert.Equal(
|
||||
[
|
||||
|
|
@ -74,8 +71,6 @@ public sealed class WorldRenderFrameBuilderTests
|
|||
Assert.Null(result.ClipRoot);
|
||||
Assert.True(visibility.WaitingForLogin);
|
||||
Assert.Equal(foundation, environment.Foundation);
|
||||
Assert.Same(drawableCells, environment.DrawableCells);
|
||||
Assert.Equal(1, environment.ClearCount);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -254,7 +249,7 @@ public sealed class WorldRenderFrameBuilderTests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
public void Runtime_environment_uses_resident_lights_independent_of_drawable_cells()
|
||||
public void Runtime_environment_uses_all_resident_lights()
|
||||
{
|
||||
const uint visibleCell = 0x01010100u;
|
||||
const uint hiddenCell = 0x01010101u;
|
||||
|
|
@ -280,10 +275,6 @@ public sealed class WorldRenderFrameBuilderTests
|
|||
lightingUbo: null,
|
||||
new WorldRenderRangeState(4, 12),
|
||||
skyPes: null);
|
||||
var borrowed = new HashSet<uint> { visibleCell };
|
||||
environment.ObserveDrawableCells(borrowed);
|
||||
borrowed.Clear();
|
||||
borrowed.Add(hiddenCell);
|
||||
WorldCameraFrame camera = CameraFrame(new FlyCamera());
|
||||
WorldRootFrame roots = default;
|
||||
RenderFrameFoundation foundation = default;
|
||||
|
|
@ -293,7 +284,6 @@ public sealed class WorldRenderFrameBuilderTests
|
|||
Assert.Contains(visibleLight, lighting.PointSnapshot);
|
||||
Assert.Contains(hiddenLight, lighting.PointSnapshot);
|
||||
|
||||
environment.ClearDrawableCells();
|
||||
environment.Prepare(in camera, in roots, in foundation, activeDayGroup: null);
|
||||
|
||||
Assert.Contains(visibleLight, lighting.PointSnapshot);
|
||||
|
|
@ -544,10 +534,6 @@ public sealed class WorldRenderFrameBuilderTests
|
|||
{
|
||||
public RenderFrameFoundation Foundation { get; private set; }
|
||||
|
||||
public IReadOnlySet<uint>? DrawableCells { get; private set; }
|
||||
|
||||
public int ClearCount { get; private set; }
|
||||
|
||||
public void Prepare(
|
||||
in WorldCameraFrame camera,
|
||||
in WorldRootFrame roots,
|
||||
|
|
@ -558,10 +544,6 @@ public sealed class WorldRenderFrameBuilderTests
|
|||
Foundation = foundation;
|
||||
}
|
||||
|
||||
public void ObserveDrawableCells(IReadOnlySet<uint> drawableCells) =>
|
||||
DrawableCells = drawableCells;
|
||||
|
||||
public void ClearDrawableCells() => ClearCount++;
|
||||
}
|
||||
|
||||
private sealed class RecordingAnimated(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue