shader control
All checks were successful
CI / React UI Build (push) Successful in 11s
CI / Native Windows Build And Tests (push) Successful in 3m3s
CI / Windows Release Package (push) Has been skipped

This commit is contained in:
Aiden
2026-05-12 17:52:55 +10:00
parent dfd49fd0e3
commit f43b6f6519
19 changed files with 562 additions and 9 deletions

View File

@@ -143,6 +143,49 @@ void TestAddAndRemoveLayers()
std::filesystem::remove_all(root);
}
void TestLayerControlsUpdateDisplayAndRenderModels()
{
std::filesystem::path root;
RenderCadenceCompositor::SupportedShaderCatalog catalog = MakeCatalog(root);
RenderCadenceCompositor::RuntimeLayerModel model;
std::string error;
std::string firstLayerId;
std::string secondLayerId;
Expect(model.AddLayer(catalog, "solid", firstLayerId, error), "first control layer can be added");
Expect(model.AddLayer(catalog, "solid", secondLayerId, error), "second control layer can be added");
Expect(model.SetLayerBypass(firstLayerId, true, error), "bypass can be set");
Expect(model.ReorderLayer(firstLayerId, 1, error), "layer can be reordered");
RenderCadenceCompositor::RuntimeLayerModelSnapshot snapshot = model.Snapshot();
Expect(snapshot.displayLayers[1].id == firstLayerId, "reordered layer moves to requested index");
Expect(snapshot.displayLayers[1].bypass, "bypass state is visible in read model");
JsonValue gainValue(0.75);
Expect(model.UpdateParameter(firstLayerId, "gain", gainValue, error), "parameter value can be updated");
snapshot = model.Snapshot();
Expect(snapshot.displayLayers[1].parameterValues.at("gain").numberValues.front() == 0.75, "updated parameter value is visible");
RuntimeShaderArtifact artifact;
artifact.layerId = firstLayerId;
artifact.shaderId = "solid";
artifact.displayName = "Solid";
artifact.fragmentShaderSource = "void main(){}";
artifact.parameterDefinitions = snapshot.displayLayers[1].parameterDefinitions;
artifact.message = "build ready";
Expect(model.MarkBuildReady(artifact, error), "ready artifact keeps layer parameter state");
snapshot = model.Snapshot();
Expect(snapshot.renderLayers.size() == 1, "ready layer produces render model");
Expect(snapshot.renderLayers[0].bypass, "render model carries bypass state");
Expect(snapshot.renderLayers[0].artifact.parameterValues.at("gain").numberValues.front() == 0.75, "render artifact carries updated parameter value");
Expect(model.ResetParameters(firstLayerId, error), "parameters can reset to defaults");
snapshot = model.Snapshot();
Expect(snapshot.displayLayers[1].parameterValues.at("gain").numberValues.front() == 0.5, "reset restores default value");
std::filesystem::remove_all(root);
}
}
int main()
@@ -151,6 +194,7 @@ int main()
TestRejectsUnsupportedStartupShader();
TestBuildFailureStaysDisplaySide();
TestAddAndRemoveLayers();
TestLayerControlsUpdateDisplayAndRenderModels();
if (gFailures != 0)
{