checkpoint(render): preserve pre-overhaul investigation state
This commit is contained in:
parent
e880860291
commit
b3b7d922f1
45 changed files with 3168 additions and 619 deletions
|
|
@ -207,7 +207,6 @@ internal sealed class WalkProductionLeafRenderer : IWalkFrameLeafRenderer
|
|||
private Action _drawExitSeals = null!;
|
||||
private readonly HashSet<uint> _singleCellScratch = new();
|
||||
private readonly List<uint> _singleCellListScratch = new();
|
||||
private readonly Dictionary<uint, int> _singleCellClipScratch = new(1);
|
||||
|
||||
internal WalkProductionLeafRenderer(
|
||||
RetailPViewPassExecutor passes,
|
||||
|
|
@ -244,26 +243,32 @@ internal sealed class WalkProductionLeafRenderer : IWalkFrameLeafRenderer
|
|||
public void DrawTerrainSlice(int sliceIndex) =>
|
||||
_passes.DrawWalkTerrainSlice(_frame, _clipAssembly, sliceIndex);
|
||||
|
||||
public void DrawCellShell(uint cellId, uint clipSlot)
|
||||
public void DrawCellShell(uint cellId)
|
||||
{
|
||||
_singleCellClipScratch.Clear();
|
||||
_singleCellClipScratch.Add(cellId, checked((int)clipSlot));
|
||||
_passes.SetCellShellClipRouting(_singleCellClipScratch);
|
||||
try
|
||||
// Output-gated binary discriminator for the moving wall-textured
|
||||
// triangles at the 0xF4180107/0112 floating stairs. Missing walls are
|
||||
// intentional while enabled: this identifies the visual carrier and
|
||||
// must not become a production admission rule.
|
||||
if (AcDream.Core.Rendering.RenderingDiagnostics
|
||||
.ProbeCathedralSkipFloatingStairCellShells
|
||||
&& cellId is 0xF4180107u or 0xF4180112u)
|
||||
{
|
||||
_singleCellScratch.Clear();
|
||||
_singleCellScratch.Add(cellId);
|
||||
_passes.DrawOpaqueCellShells(_singleCellScratch);
|
||||
if (_passes.CellHasTransparentShell(cellId))
|
||||
{
|
||||
_singleCellListScratch.Clear();
|
||||
_singleCellListScratch.Add(cellId);
|
||||
_passes.DrawTransparentCellShellsOrdered(_singleCellListScratch);
|
||||
}
|
||||
return;
|
||||
}
|
||||
finally
|
||||
|
||||
// Retail DrawEnvCell @0x0059F170 submits the prepared EnvCell mesh
|
||||
// whole after stamping it drawn-this-frame. obj_view_set prepares
|
||||
// legacy polygon/object tests, but the use_built_mesh branch calls
|
||||
// D3DPolyRender::DrawMesh directly; it does not slice the shell mesh
|
||||
// once per portal polygon.
|
||||
_singleCellScratch.Clear();
|
||||
_singleCellScratch.Add(cellId);
|
||||
_passes.DrawOpaqueCellShells(_singleCellScratch);
|
||||
if (_passes.CellHasTransparentShell(cellId))
|
||||
{
|
||||
_passes.SetCellShellClipRouting(null);
|
||||
_singleCellListScratch.Clear();
|
||||
_singleCellListScratch.Add(cellId);
|
||||
_passes.DrawTransparentCellShellsOrdered(_singleCellListScratch);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue