perf(rendering): draw retained frame product
Make the incremental render scene the production entity source at the existing retail PView stages while retaining the accepted dispatcher upload and draw executor. Keep diagnostics consumer-gated, retain ordered indices across unchanged frames, refresh only dirty records, and preserve exact mesh-load, selection, alpha, lighting, and route lifecycle semantics.
This commit is contained in:
parent
c7d7848dd2
commit
ef1d263337
13 changed files with 1333 additions and 267 deletions
|
|
@ -374,12 +374,6 @@ internal sealed class FrameRootCompositionPhase
|
|||
&& d.Options.AutomationArtifactDirectory is not null
|
||||
? new CurrentRenderSceneOracle()
|
||||
: null;
|
||||
if ((currentRenderSceneOracle is null)
|
||||
!= (live.RenderSceneShadow is null))
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"Lifecycle automation must compose the current-path referee and shadow render scene together.");
|
||||
}
|
||||
RenderSceneShadowComparisonController? renderSceneShadowComparison =
|
||||
currentRenderSceneOracle is not null
|
||||
&& live.RenderSceneShadow is not null
|
||||
|
|
@ -390,18 +384,18 @@ internal sealed class FrameRootCompositionPhase
|
|||
acknowledgeDirty: false)
|
||||
: null;
|
||||
RenderScenePViewFrameProductController? renderFrameProduct =
|
||||
currentRenderSceneOracle is not null
|
||||
&& live.RenderSceneShadow is not null
|
||||
live.RenderSceneShadow is not null
|
||||
? new RenderScenePViewFrameProductController(
|
||||
live.RenderSceneShadow,
|
||||
currentRenderSceneOracle,
|
||||
message => d.Log("[UI-PROBE] " + message),
|
||||
live.DrawDispatcher)
|
||||
: null;
|
||||
live.DrawDispatcher.SetCurrentRenderSceneObserver(
|
||||
currentRenderSceneOracle);
|
||||
live.SelectionScene.SetCurrentRenderSceneObserver(
|
||||
currentRenderSceneOracle);
|
||||
// After G4 the retained product is the production object source.
|
||||
// The old dispatcher/selection observer is intentionally detached;
|
||||
// automation still compares the independently built PView route list.
|
||||
live.DrawDispatcher.SetCurrentRenderSceneObserver(null);
|
||||
live.SelectionScene.SetCurrentRenderSceneObserver(null);
|
||||
var worldSceneRenderer = new WorldSceneRenderer(
|
||||
renderFrameResources,
|
||||
renderLoginState,
|
||||
|
|
|
|||
|
|
@ -200,15 +200,11 @@ internal sealed class LivePresentationCompositionPhase
|
|||
{
|
||||
CompositionAcquisitionScope.CompositionAcquisitionLease<
|
||||
RenderSceneShadowRuntime>? renderSceneShadowLease = null;
|
||||
if (interaction.RetainedUi?.Screenshots is not null
|
||||
&& d.Options.AutomationArtifactDirectory is not null)
|
||||
{
|
||||
renderSceneShadowLease = scope.Acquire(
|
||||
"shadow render scene",
|
||||
() => new RenderSceneShadowRuntime(
|
||||
RenderSceneGeneration.FromRaw(1)),
|
||||
static value => value.Dispose());
|
||||
}
|
||||
renderSceneShadowLease = scope.Acquire(
|
||||
"render scene",
|
||||
() => new RenderSceneShadowRuntime(
|
||||
RenderSceneGeneration.FromRaw(1)),
|
||||
static value => value.Dispose());
|
||||
RenderSceneShadowRuntime? renderSceneShadow =
|
||||
renderSceneShadowLease?.Resource;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue