shader control
This commit is contained in:
@@ -93,6 +93,31 @@ inline void WriteDefaultParameterValue(JsonWriter& writer, const ShaderParameter
|
||||
writer.Null();
|
||||
}
|
||||
|
||||
inline void WriteParameterValue(JsonWriter& writer, const ShaderParameterDefinition& parameter, const ShaderParameterValue& value)
|
||||
{
|
||||
switch (parameter.type)
|
||||
{
|
||||
case ShaderParameterType::Boolean:
|
||||
writer.Bool(value.booleanValue);
|
||||
return;
|
||||
case ShaderParameterType::Enum:
|
||||
writer.String(value.enumValue);
|
||||
return;
|
||||
case ShaderParameterType::Text:
|
||||
writer.String(value.textValue);
|
||||
return;
|
||||
case ShaderParameterType::Trigger:
|
||||
case ShaderParameterType::Float:
|
||||
writer.Double(value.numberValues.empty() ? 0.0 : value.numberValues.front());
|
||||
return;
|
||||
case ShaderParameterType::Vec2:
|
||||
case ShaderParameterType::Color:
|
||||
WriteNumberArray(writer, value.numberValues);
|
||||
return;
|
||||
}
|
||||
writer.Null();
|
||||
}
|
||||
|
||||
inline void WriteTemporalJson(JsonWriter& writer, const TemporalSettings& temporal)
|
||||
{
|
||||
writer.BeginObject();
|
||||
@@ -122,7 +147,7 @@ inline const char* RuntimeLayerBuildStateName(RuntimeLayerBuildState state)
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
inline void WriteParameterDefinitionJson(JsonWriter& writer, const ShaderParameterDefinition& parameter)
|
||||
inline void WriteParameterDefinitionJson(JsonWriter& writer, const ShaderParameterDefinition& parameter, const ShaderParameterValue* value)
|
||||
{
|
||||
writer.BeginObject();
|
||||
writer.KeyString("id", parameter.id);
|
||||
@@ -132,7 +157,10 @@ inline void WriteParameterDefinitionJson(JsonWriter& writer, const ShaderParamet
|
||||
writer.Key("defaultValue");
|
||||
WriteDefaultParameterValue(writer, parameter);
|
||||
writer.Key("value");
|
||||
WriteDefaultParameterValue(writer, parameter);
|
||||
if (value)
|
||||
WriteParameterValue(writer, parameter, *value);
|
||||
else
|
||||
WriteDefaultParameterValue(writer, parameter);
|
||||
|
||||
if (!parameter.minNumbers.empty())
|
||||
{
|
||||
@@ -197,10 +225,10 @@ inline void WriteLayersJson(JsonWriter& writer, const RuntimeStateJsonInput& inp
|
||||
WriteFeedbackJson(writer, FeedbackSettings());
|
||||
writer.Key("parameters");
|
||||
writer.BeginArray();
|
||||
if (shaderPackage)
|
||||
for (const ShaderParameterDefinition& parameter : layer.parameterDefinitions)
|
||||
{
|
||||
for (const ShaderParameterDefinition& parameter : shaderPackage->parameters)
|
||||
WriteParameterDefinitionJson(writer, parameter);
|
||||
const auto valueIt = layer.parameterValues.find(parameter.id);
|
||||
WriteParameterDefinitionJson(writer, parameter, valueIt == layer.parameterValues.end() ? nullptr : &valueIt->second);
|
||||
}
|
||||
writer.EndArray();
|
||||
writer.EndObject();
|
||||
|
||||
Reference in New Issue
Block a user