Phase 3 refactor in progress
Some checks failed
CI / React UI Build (push) Successful in 10s
CI / Native Windows Build And Tests (push) Successful in 2m33s
CI / Windows Release Package (push) Has been cancelled

This commit is contained in:
Aiden
2026-05-11 16:48:52 +10:00
parent 0808171677
commit 06f3dd4942
12 changed files with 655 additions and 87 deletions

View File

@@ -259,8 +259,7 @@ bool RenderEngine::ResolveRenderLayerStates(
layerStates.clear();
if (useCommittedLayerStates)
{
layerStates = mShaderPrograms.CommittedLayerStates();
ApplyOscOverlays(layerStates, false, oscSmoothing, commitRequests);
layerStates = ComposeRenderLayerStates(mShaderPrograms.CommittedLayerStates(), false, oscSmoothing, commitRequests);
mRuntimeSnapshotProvider.RefreshDynamicRenderStateFields(layerStates);
return true;
}
@@ -281,12 +280,12 @@ bool RenderEngine::ResolveRenderLayerStates(
renderSnapshot.versions.parameterStateVersion = mCachedParameterStateVersion;
renderSnapshot.states = mCachedLayerRenderStates;
ApplyOscOverlays(renderSnapshot.states, true, oscSmoothing, commitRequests);
renderSnapshot.states = ComposeRenderLayerStates(renderSnapshot.states, true, oscSmoothing, commitRequests);
if (mCachedParameterStateVersion != versions.parameterStateVersion &&
mRuntimeSnapshotProvider.TryRefreshPublishedSnapshotParameters(renderSnapshot))
{
mCachedParameterStateVersion = renderSnapshot.versions.parameterStateVersion;
ApplyOscOverlays(renderSnapshot.states, true, oscSmoothing, commitRequests);
renderSnapshot.states = ComposeRenderLayerStates(renderSnapshot.states, true, oscSmoothing, commitRequests);
}
mCachedLayerRenderStates = renderSnapshot.states;
@@ -303,36 +302,38 @@ bool RenderEngine::ResolveRenderLayerStates(
mCachedParameterStateVersion = renderSnapshot.versions.parameterStateVersion;
mCachedRenderStateWidth = renderSnapshot.outputWidth;
mCachedRenderStateHeight = renderSnapshot.outputHeight;
ApplyOscOverlays(mCachedLayerRenderStates, true, oscSmoothing, commitRequests);
mCachedLayerRenderStates = ComposeRenderLayerStates(mCachedLayerRenderStates, true, oscSmoothing, commitRequests);
layerStates = mCachedLayerRenderStates;
return true;
}
ApplyOscOverlays(mCachedLayerRenderStates, true, oscSmoothing, commitRequests);
layerStates = mCachedLayerRenderStates;
layerStates = ComposeRenderLayerStates(mCachedLayerRenderStates, true, oscSmoothing, commitRequests);
mRuntimeSnapshotProvider.RefreshDynamicRenderStateFields(layerStates);
return !layerStates.empty();
}
void RenderEngine::ApplyOscOverlays(
std::vector<RuntimeRenderState>& states,
std::vector<RuntimeRenderState> RenderEngine::ComposeRenderLayerStates(
const std::vector<RuntimeRenderState>& baseStates,
bool allowCommit,
double smoothing,
std::vector<OscOverlayCommitRequest>* commitRequests)
{
std::vector<RuntimeLiveOscCommitRequest> liveCommitRequests;
RuntimeLiveStateApplyOptions options;
options.allowCommit = allowCommit;
options.smoothing = smoothing;
options.commitDelay = kOscOverlayCommitDelay;
options.now = std::chrono::steady_clock::now();
mRuntimeLiveState.ApplyToLayerStates(states, options, commitRequests ? &liveCommitRequests : nullptr);
RenderStateCompositionInput input;
input.baseLayerStates = &baseStates;
input.liveState = &mRuntimeLiveState;
input.allowLiveCommits = allowCommit;
input.collectLiveCommitRequests = commitRequests != nullptr;
input.liveSmoothing = smoothing;
input.liveCommitDelay = kOscOverlayCommitDelay;
input.now = std::chrono::steady_clock::now();
const RenderStateCompositionResult result = mRenderStateComposer.BuildFrameState(input);
if (!commitRequests)
return;
return result.layerStates;
for (const RuntimeLiveOscCommitRequest& request : liveCommitRequests)
for (const RuntimeLiveOscCommitRequest& request : result.commitRequests)
commitRequests->push_back({ request.routeKey, request.layerKey, request.parameterKey, request.value, request.generation });
return result.layerStates;
}
void RenderEngine::RenderLayerStack(