revert(render): FW4 slices 4+5 - unanimous tri-review verdict
Reverts0d6cd5c0(slice 5) andf3a03efc(slice 4). All three independent cathedral reviews (fable, opus, external) plus the DAT geometry ground truth condemned both: - Slice 5 misidentified its targets: owners 0x4F418012-15 are cell 0xF4180106''s TORCHES + a prop + a plant (InteriorEntityIdAllocator namespace), not the falls - the real waterfall emitters are outdoor landblock objects in the 0xC namespace (0xCF418000-13). Moving torch flames pre-clear is the owner-reported in-cathedral particle regression. - Slice 4''s straddle rule is invented (retail stages by actual shadow-cell membership), and its "emit once" contradicts retail''s deliberate mid-frame m_nFrameStamp re-arm @0x005a4886 (a part overlapping both scopes legitimately draws twice). The synthesis of all seven review reports and the adjudicated fix plan live in docs/research/2026-08-30-cathedral-synthesis.md (next commit). Hermetic 6,762/0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
bb9212c70d
commit
7f500b97a3
3 changed files with 3 additions and 142 deletions
|
|
@ -161,10 +161,6 @@ public sealed unsafe partial class ParticleRenderer : IDisposable
|
|||
private readonly List<MeshParticleInstance> _meshRunScratch = new(64);
|
||||
private readonly List<ParticleSubmission> _submissionScratch = new(128);
|
||||
private readonly List<RuntimeParticleEmitter> _scopedEmitterScratch = new(64);
|
||||
|
||||
// ACDREAM_PROBE_WALK_ROOT companion (throwaway): rate limiter for the
|
||||
// [walk-emit] interior-unattached emitter dump.
|
||||
private uint _probeEmitterDumpCounter;
|
||||
private readonly List<DeferredParticleDraw> _deferredAlpha = new(128);
|
||||
private DeferredParticleDraw[] _preparedAlpha = new DeferredParticleDraw[256];
|
||||
private uint[] _preparedInstanceOffsets = new uint[256];
|
||||
|
|
@ -251,22 +247,6 @@ public sealed unsafe partial class ParticleRenderer : IDisposable
|
|||
_scopedEmitterScratch,
|
||||
excludedAttachedOwnerIds,
|
||||
unattachedCellScope);
|
||||
// ACDREAM_PROBE_WALK_ROOT companion (throwaway): identify WHICH
|
||||
// emitters ride the interior-unattached route (the falls hunt) —
|
||||
// owner cell, anchor position, attachment.
|
||||
if (AcDream.Core.Rendering.RenderingDiagnostics.ProbeWalkRootEnabled
|
||||
&& unattachedCellScope == UnattachedEmitterCellScope.InteriorCells
|
||||
&& ++_probeEmitterDumpCounter % 120 == 0)
|
||||
{
|
||||
foreach (var em in _scopedEmitterScratch)
|
||||
{
|
||||
Console.WriteLine(
|
||||
$"[walk-emit] cell={em.OwnerCellId:x8} attached={em.AttachedObjectId:x} "
|
||||
+ $"anchor=({em.AnchorPos.X:F1},{em.AnchorPos.Y:F1},{em.AnchorPos.Z:F1}) "
|
||||
+ $"active={em.ActiveCount} "
|
||||
+ $"phase={AcDream.Core.Rendering.RenderingDiagnostics.WalkRootPhase}");
|
||||
}
|
||||
}
|
||||
Matrix4x4.Invert(camera.View, out Matrix4x4 invView);
|
||||
Vector3 cameraRight = Vector3.Normalize(new Vector3(invView.M11, invView.M12, invView.M13));
|
||||
Vector3 cameraUp = Vector3.Normalize(new Vector3(invView.M21, invView.M22, invView.M23));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue