Added config editor in front end
All checks were successful
CI / React UI Build (push) Successful in 11s
CI / Native Windows Build And Tests (push) Successful in 2m46s
CI / Windows Release Package (push) Has been skipped

This commit is contained in:
Aiden
2026-05-30 19:33:40 +10:00
parent f0f8b080ca
commit 8ffc011ca0
26 changed files with 1201 additions and 55 deletions

View File

@@ -8,8 +8,8 @@
#include "InputFrameTexture.h"
#include "readback/OutputReadbackPipeline.h"
#include "GLExtensions.h"
#include "RuntimeRenderScene.h"
#include "SimpleMotionRenderer.h"
#include "RenderContent.h"
#include "RuntimeShaderRenderContent.h"
#include <memory>
#include <thread>
@@ -41,19 +41,13 @@ void RenderThread::ThreadMain()
return;
}
SimpleMotionRenderer renderer;
RuntimeRenderScene runtimeRenderScene;
RuntimeShaderRenderContent renderContent;
OutputReadbackPipeline readback;
InputFrameTexture inputTexture;
if (!runtimeRenderScene.StartPrepareWorker(std::move(prepareWindow), error))
{
SignalStartupFailure(error.empty() ? "Runtime shader prepare worker initialization failed." : error);
return;
}
if (!renderer.InitializeGl(mConfig.width, mConfig.height) ||
if (!renderContent.InitializeGl(RenderContentGlConfig{ mConfig.width, mConfig.height, std::move(prepareWindow) }, error) ||
!readback.Initialize(mConfig.width, mConfig.height, mConfig.outputPixelFormat, mConfig.pboDepth))
{
SignalStartupFailure("Render pipeline initialization failed.");
SignalStartupFailure(error.empty() ? "Render pipeline initialization failed." : error);
return;
}
@@ -82,16 +76,16 @@ void RenderThread::ThreadMain()
continue;
}
TryCommitReadyRuntimeShader(runtimeRenderScene);
TryCommitReadyRuntimeShader(renderContent);
const GLuint videoInputTexture = inputTexture.PollAndUpload(mInputMailbox);
PublishInputMetrics(inputTexture);
if (!readback.RenderAndQueue(frameIndex, [this, &renderer, &runtimeRenderScene, videoInputTexture](uint64_t index) {
if (runtimeRenderScene.HasLayers())
runtimeRenderScene.RenderFrame(index, mConfig.width, mConfig.height, videoInputTexture);
else if (videoInputTexture != 0)
renderer.RenderTexture(videoInputTexture);
else
renderer.RenderFrame(index);
if (!readback.RenderAndQueue(frameIndex, [this, &renderContent, videoInputTexture](uint64_t index) {
renderContent.RenderFrame(RenderContentFrame{
index,
mConfig.width,
mConfig.height,
videoInputTexture
});
}))
{
mPboQueueMisses.fetch_add(1, std::memory_order_relaxed);
@@ -120,8 +114,7 @@ void RenderThread::ThreadMain()
readback.Shutdown();
inputTexture.ShutdownGl();
runtimeRenderScene.ShutdownGl();
renderer.ShutdownGl();
renderContent.ShutdownGl();
window.ClearCurrent();
mRunning.store(false, std::memory_order_release);
RenderCadenceCompositor::TryLog(RenderCadenceCompositor::LogLevel::Log, "render-thread", "Render thread stopped.");

View File

@@ -3,7 +3,6 @@
#include "RenderCadenceClock.h"
#include "RuntimeLayerModel.h"
#include "RuntimeShaderArtifact.h"
#include "RuntimeRenderScene.h"
#include "VideoIOFormat.h"
#include <atomic>
@@ -18,6 +17,7 @@ class SystemFrameExchange;
class InputFrameMailbox;
class InputFrameTexture;
class OutputReadbackPipeline;
class RuntimeShaderRenderContent;
class RenderThread
{
@@ -81,7 +81,7 @@ private:
void CountAcquireMiss();
void PublishReadbackMetrics(const OutputReadbackPipeline& readback);
void PublishInputMetrics(const InputFrameTexture& inputTexture);
void TryCommitReadyRuntimeShader(RuntimeRenderScene& runtimeRenderScene);
void TryCommitReadyRuntimeShader(RuntimeShaderRenderContent& renderContent);
bool TryTakePendingRuntimeShaderArtifact(RuntimeShaderArtifact& artifact);
bool TryTakePendingRenderLayers(std::vector<RenderCadenceCompositor::RuntimeRenderLayerModel>& layers);

View File

@@ -1,6 +1,7 @@
#include "RenderThread.h"
#include "../logging/Logger.h"
#include "RuntimeShaderRenderContent.h"
#include <mutex>
#include <utility>
@@ -47,14 +48,14 @@ bool RenderThread::TryTakePendingRenderLayers(std::vector<RenderCadenceComposito
return true;
}
void RenderThread::TryCommitReadyRuntimeShader(RuntimeRenderScene& runtimeRenderScene)
void RenderThread::TryCommitReadyRuntimeShader(RuntimeShaderRenderContent& renderContent)
{
std::vector<RenderCadenceCompositor::RuntimeRenderLayerModel> layers;
std::string commitError;
if (TryTakePendingRenderLayers(layers))
{
bool structuralChange = false;
if (!runtimeRenderScene.CommitRenderLayers(layers, commitError, &structuralChange))
if (!renderContent.CommitRenderLayers(layers, commitError, &structuralChange))
{
RenderCadenceCompositor::TryLog(
RenderCadenceCompositor::LogLevel::Error,
@@ -84,7 +85,7 @@ void RenderThread::TryCommitReadyRuntimeShader(RuntimeRenderScene& runtimeRender
layer.shaderId = artifact.shaderId;
layer.artifact = artifact;
layers.push_back(std::move(layer));
if (!runtimeRenderScene.CommitRenderLayers(layers, commitError))
if (!renderContent.CommitRenderLayers(layers, commitError))
{
RenderCadenceCompositor::TryLog(
RenderCadenceCompositor::LogLevel::Error,