Handle shader options of any type
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
#include <Nazara/Shader/Config.hpp>
|
||||
#include <Nazara/Shader/Ast/AstCloner.hpp>
|
||||
#include <optional>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
namespace Nz::ShaderAst
|
||||
@@ -36,7 +37,6 @@ namespace Nz::ShaderAst
|
||||
struct Options
|
||||
{
|
||||
std::function<const ConstantValue&(std::size_t constantId)> constantQueryCallback;
|
||||
std::optional<UInt64> enabledOptions = 0;
|
||||
};
|
||||
|
||||
protected:
|
||||
|
||||
@@ -18,7 +18,10 @@
|
||||
|
||||
namespace Nz::ShaderAst
|
||||
{
|
||||
using NoValue = std::monostate;
|
||||
|
||||
using ConstantTypes = TypeList<
|
||||
NoValue,
|
||||
bool,
|
||||
float,
|
||||
Int32,
|
||||
|
||||
@@ -302,7 +302,7 @@ namespace Nz::ShaderAst
|
||||
|
||||
std::optional<std::size_t> optIndex;
|
||||
std::string optName;
|
||||
ExpressionPtr initialValue;
|
||||
ExpressionPtr defaultValue;
|
||||
ExpressionType optType;
|
||||
};
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace Nz::ShaderAst
|
||||
struct Options
|
||||
{
|
||||
std::unordered_set<std::string> reservedIdentifiers;
|
||||
UInt64 enabledOptions = 0;
|
||||
std::unordered_map<std::size_t, ConstantValue> optionValues;
|
||||
bool makeVariableNameUnique = false;
|
||||
bool removeOptionDeclaration = true;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user