shader control
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user