compiles again
This commit is contained in:
@@ -9,23 +9,23 @@ Material::Material()
|
||||
{
|
||||
}
|
||||
|
||||
Material::Material(Gfx::PGraphics graphics,
|
||||
Array<OShaderParameter> parameter,
|
||||
Material::Material(Gfx::PGraphics graphics,
|
||||
Gfx::ODescriptorLayout layout,
|
||||
uint32 uniformDataSize,
|
||||
uint32 uniformBinding,
|
||||
std::string materialName,
|
||||
Array<OShaderExpression> expressions,
|
||||
Map<std::string, OShaderExpression> expressions,
|
||||
Array<std::string> parameter,
|
||||
MaterialNode brdf)
|
||||
: graphics(graphics)
|
||||
, parameters(std::move(parameter))
|
||||
, uniformDataSize(uniformDataSize)
|
||||
, uniformBinding(uniformBinding)
|
||||
, instanceId(0)
|
||||
, layout(std::move(layout))
|
||||
, materialName(materialName)
|
||||
, codeExpressions(std::move(expressions))
|
||||
, brdf(brdf)
|
||||
, instanceId(0)
|
||||
, parameters(std::move(parameter))
|
||||
, brdf(std::move(brdf))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -33,14 +33,19 @@ Material::~Material()
|
||||
{
|
||||
}
|
||||
|
||||
PMaterialInstance Seele::Material::instantiate()
|
||||
OMaterialInstance Material::instantiate()
|
||||
{
|
||||
return new MaterialInstance(instanceId++, graphics, this, layout, parameters, uniformBinding, uniformDataSize);
|
||||
return new MaterialInstance(
|
||||
instanceId++,
|
||||
graphics,
|
||||
codeExpressions,
|
||||
parameters,
|
||||
uniformBinding,
|
||||
uniformDataSize);
|
||||
}
|
||||
|
||||
void Material::save(ArchiveBuffer& buffer) const
|
||||
{
|
||||
Serialization::save(buffer, brdfName);
|
||||
Serialization::save(buffer, uniformDataSize);
|
||||
Serialization::save(buffer, uniformBinding);
|
||||
Serialization::save(buffer, instanceId);
|
||||
@@ -59,13 +64,11 @@ void Material::save(ArchiveBuffer& buffer) const
|
||||
Serialization::save(buffer, binding.descriptorType);
|
||||
Serialization::save(buffer, binding.shaderStages);
|
||||
}
|
||||
Serialization::save(buffer, instances);
|
||||
}
|
||||
|
||||
void Material::load(ArchiveBuffer& buffer)
|
||||
{
|
||||
graphics = buffer.getGraphics();
|
||||
Serialization::load(buffer, brdfName);
|
||||
Serialization::load(buffer, uniformDataSize);
|
||||
Serialization::load(buffer, uniformBinding);
|
||||
Serialization::load(buffer, instanceId);
|
||||
@@ -98,11 +101,6 @@ void Material::load(ArchiveBuffer& buffer)
|
||||
layout->addDescriptorBinding(binding, descriptorType, descriptorCount, bindingFlags, shaderStages);
|
||||
}
|
||||
layout->create();
|
||||
Serialization::load(buffer, instances);
|
||||
for (auto& instance : instances)
|
||||
{
|
||||
instance->setBaseMaterial(this);
|
||||
}
|
||||
}
|
||||
|
||||
void Material::compile()
|
||||
@@ -114,21 +112,23 @@ void Material::compile()
|
||||
codeStream << "struct " << materialName << " : IMaterial {\n";
|
||||
for(const auto& parameter : parameters)
|
||||
{
|
||||
parameter->generateDeclaration(codeStream);
|
||||
PShaderParameter handle = PShaderExpression(codeExpressions[parameter]);
|
||||
handle->generateDeclaration(codeStream);
|
||||
}
|
||||
codeStream << "\ttypedef " << brdf.profile << " BRDF;\n";
|
||||
codeStream << "\t" << brdf.profile << " prepare(MaterialFragmentParameter input) {\n";
|
||||
codeStream << "\t\t" << brdf.profile << " result;\n";
|
||||
Map<int32, std::string> varState;
|
||||
for(const auto& expr : codeExpressions)
|
||||
Map<std::string, std::string> varState;
|
||||
for(const auto& [_, expr] :codeExpressions)
|
||||
{
|
||||
codeStream << expr->evaluate(varState);
|
||||
}
|
||||
for(const auto& [name, exp] : brdf.variables)
|
||||
{
|
||||
codeStream << "\t\tresult." << name << " = " << varState[exp->key] << ";";
|
||||
codeStream << "\t\tresult." << name << " = " << varState[exp] << ";";
|
||||
}
|
||||
codeStream << "\t\treturn result;\n";
|
||||
codeStream << "\t}\n";
|
||||
codeStream << "};\n";
|
||||
graphics->getShaderCompiler()->registerMaterial(this);
|
||||
}
|
||||
|
||||
@@ -9,18 +9,17 @@ class Material
|
||||
{
|
||||
public:
|
||||
Material();
|
||||
Material(Gfx::PGraphics graphics,
|
||||
Array<OShaderParameter> parameter,
|
||||
Material(Gfx::PGraphics graphics,
|
||||
Gfx::ODescriptorLayout layout,
|
||||
uint32 uniformDataSize,
|
||||
uint32 uniformBinding,
|
||||
std::string materialName,
|
||||
Array<OShaderExpression> expressions,
|
||||
Map<std::string, OShaderExpression> expressions,
|
||||
Array<std::string> parameter,
|
||||
MaterialNode brdf);
|
||||
~Material();
|
||||
const Gfx::PDescriptorLayout getDescriptorLayout() const { return layout; }
|
||||
PMaterialInstance instantiate();
|
||||
PMaterialInstance getInstance(uint64 instance) { return instances[instance]; }
|
||||
OMaterialInstance instantiate();
|
||||
const std::string& getName() const { return materialName; }
|
||||
|
||||
void save(ArchiveBuffer& buffer) const;
|
||||
@@ -30,15 +29,13 @@ public:
|
||||
|
||||
private:
|
||||
Gfx::PGraphics graphics;
|
||||
std::string brdfName;
|
||||
uint32 uniformDataSize;
|
||||
uint32 uniformBinding;
|
||||
uint64 instanceId;
|
||||
Gfx::ODescriptorLayout layout;
|
||||
std::string materialName;
|
||||
Array<OShaderExpression> codeExpressions;
|
||||
Array<OShaderParameter> parameters;
|
||||
Array<OMaterialInstance> instances;
|
||||
Map<std::string, OShaderExpression> codeExpressions;
|
||||
Array<std::string> parameters;
|
||||
MaterialNode brdf;
|
||||
};
|
||||
DEFINE_REF(Material)
|
||||
|
||||
@@ -8,17 +8,34 @@ MaterialInstance::MaterialInstance()
|
||||
{
|
||||
}
|
||||
|
||||
MaterialInstance::MaterialInstance(uint64 id, Gfx::PGraphics graphics, PMaterial baseMaterial, Gfx::PDescriptorLayout layout, Array<OShaderParameter> params, uint32 uniformBinding, uint32 uniformSize)
|
||||
: id(id), graphics(graphics), baseMaterial(baseMaterial), layout(layout), parameters(params), uniformBinding(uniformBinding)
|
||||
MaterialInstance::MaterialInstance(uint64 id,
|
||||
Gfx::PGraphics graphics,
|
||||
Map<std::string, OShaderExpression>& expressions,
|
||||
Array<std::string> params,
|
||||
uint32 uniformBinding,
|
||||
uint32 uniformSize)
|
||||
: id(id)
|
||||
, graphics(graphics)
|
||||
, uniformBinding(uniformBinding)
|
||||
{
|
||||
uniformBuffer = graphics->createUniformBuffer(UniformBufferCreateInfo{
|
||||
.sourceData = {
|
||||
.size = uniformSize,
|
||||
},
|
||||
.bDynamic = true,
|
||||
.dynamic = true,
|
||||
}
|
||||
);
|
||||
uniformData.resize(uniformSize);
|
||||
ArchiveBuffer buffer(graphics);
|
||||
parameters.reserve(params.size());
|
||||
for (int i = 0; i < params.size(); ++i)
|
||||
{
|
||||
Serialization::save(buffer, params[i]);
|
||||
buffer.rewind();
|
||||
OShaderParameter param;
|
||||
Serialization::load(buffer, param);
|
||||
parameters.add(std::move(param));
|
||||
}
|
||||
}
|
||||
|
||||
MaterialInstance::~MaterialInstance()
|
||||
@@ -28,6 +45,8 @@ MaterialInstance::~MaterialInstance()
|
||||
|
||||
void MaterialInstance::updateDescriptor()
|
||||
{
|
||||
Gfx::PDescriptorLayout layout = baseMaterial->getMaterial()->getDescriptorLayout();
|
||||
layout->reset();
|
||||
descriptor = layout->allocateDescriptorSet();
|
||||
for (auto& param : parameters)
|
||||
{
|
||||
@@ -36,16 +55,27 @@ void MaterialInstance::updateDescriptor()
|
||||
descriptor->writeChanges();
|
||||
}
|
||||
|
||||
Gfx::PDescriptorSet Seele::MaterialInstance::getDescriptorSet() const
|
||||
Gfx::PDescriptorSet MaterialInstance::getDescriptorSet() const
|
||||
{
|
||||
return descriptor;
|
||||
}
|
||||
|
||||
void MaterialInstance::setBaseMaterial(PMaterialAsset asset)
|
||||
{
|
||||
uniformBuffer = graphics->createUniformBuffer(UniformBufferCreateInfo{
|
||||
.sourceData = {
|
||||
.size = uniformData.size(),
|
||||
},
|
||||
.dynamic = true,
|
||||
}
|
||||
);
|
||||
baseMaterial = asset;
|
||||
}
|
||||
|
||||
void MaterialInstance::save(ArchiveBuffer& buffer) const
|
||||
{
|
||||
Serialization::save(buffer, uniformData);
|
||||
Serialization::save(buffer, uniformBinding);
|
||||
Serialization::save(buffer, uniformBuffer);
|
||||
Serialization::save(buffer, parameters);
|
||||
Serialization::save(buffer, id);
|
||||
}
|
||||
@@ -55,19 +85,6 @@ void MaterialInstance::load(ArchiveBuffer& buffer)
|
||||
graphics = buffer.getGraphics();
|
||||
Serialization::load(buffer, uniformData);
|
||||
Serialization::load(buffer, uniformBinding);
|
||||
Serialization::load(buffer, uniformBuffer);
|
||||
Serialization::load(buffer, parameters);
|
||||
Serialization::load(buffer, id);
|
||||
}
|
||||
|
||||
void MaterialInstance::setBaseMaterial(PMaterial material)
|
||||
{
|
||||
layout = material->getDescriptorLayout();
|
||||
baseMaterial = material;
|
||||
descriptor = layout->allocateDescriptorSet();
|
||||
for (auto& param : parameters)
|
||||
{
|
||||
param->updateDescriptorSet(descriptor, uniformData.data());
|
||||
}
|
||||
descriptor->writeChanges();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
#include "Material.h"
|
||||
#include "Graphics/Buffer.h"
|
||||
#include "Asset/MaterialAsset.h"
|
||||
|
||||
namespace Seele
|
||||
{
|
||||
@@ -8,16 +9,22 @@ class MaterialInstance
|
||||
{
|
||||
public:
|
||||
MaterialInstance();
|
||||
MaterialInstance(uint64 id, Gfx::PGraphics graphics, PMaterial baseMaterial, Gfx::PDescriptorLayout descriptor, Array<OShaderParameter> params, uint32 uniformBinding, uint32 uniformSize);
|
||||
MaterialInstance(uint64 id,
|
||||
Gfx::PGraphics graphics,
|
||||
Map<std::string, OShaderExpression>& expressions,
|
||||
Array<std::string> params,
|
||||
uint32 uniformBinding,
|
||||
uint32 uniformSize);
|
||||
~MaterialInstance();
|
||||
void updateDescriptor();
|
||||
Gfx::PDescriptorSet getDescriptorSet() const;
|
||||
PMaterial getBaseMaterial() const { return baseMaterial; }
|
||||
PMaterial getBaseMaterial() const { return baseMaterial->getMaterial(); }
|
||||
uint64 getId() const { return id; }
|
||||
|
||||
void setBaseMaterial(PMaterialAsset asset);
|
||||
|
||||
void save(ArchiveBuffer& buffer) const;
|
||||
void load(ArchiveBuffer& buffer);
|
||||
void setBaseMaterial(PMaterial material);
|
||||
|
||||
private:
|
||||
Gfx::PGraphics graphics;
|
||||
@@ -25,9 +32,8 @@ private:
|
||||
uint32 uniformBinding;
|
||||
Gfx::OUniformBuffer uniformBuffer;
|
||||
Array<OShaderParameter> parameters;
|
||||
Gfx::PDescriptorLayout layout;
|
||||
Gfx::PDescriptorSet descriptor;
|
||||
PMaterial baseMaterial;
|
||||
PMaterialAsset baseMaterial;
|
||||
uint64 id;
|
||||
};
|
||||
DEFINE_REF(MaterialInstance)
|
||||
|
||||
@@ -31,6 +31,15 @@ void ExpressionOutput::load(ArchiveBuffer& buffer)
|
||||
Serialization::load(buffer, type);
|
||||
}
|
||||
|
||||
ShaderExpression::ShaderExpression()
|
||||
{
|
||||
}
|
||||
|
||||
ShaderExpression::ShaderExpression(std::string key)
|
||||
: key(key)
|
||||
{
|
||||
}
|
||||
|
||||
void ShaderExpression::save(ArchiveBuffer& buffer) const
|
||||
{
|
||||
Serialization::save(buffer, inputs);
|
||||
@@ -46,7 +55,7 @@ void ShaderExpression::load(ArchiveBuffer& buffer)
|
||||
}
|
||||
|
||||
ShaderParameter::ShaderParameter(std::string name, uint32 byteOffset, uint32 binding)
|
||||
: name(name)
|
||||
: ShaderExpression(name)
|
||||
, byteOffset(byteOffset)
|
||||
, binding(binding)
|
||||
{
|
||||
@@ -56,16 +65,16 @@ ShaderParameter::~ShaderParameter()
|
||||
{
|
||||
}
|
||||
|
||||
std::string ShaderParameter::evaluate(Map<int32, std::string>& varState) const
|
||||
std::string ShaderParameter::evaluate(Map<std::string, std::string>& varState) const
|
||||
{
|
||||
varState[key] = name;
|
||||
varState[key] = key;
|
||||
return "";
|
||||
}
|
||||
|
||||
void ShaderParameter::save(ArchiveBuffer& buffer) const
|
||||
{
|
||||
ShaderExpression::save(buffer);
|
||||
Serialization::save(buffer, name);
|
||||
Serialization::save(buffer, key);
|
||||
Serialization::save(buffer, byteOffset);
|
||||
Serialization::save(buffer, binding);
|
||||
}
|
||||
@@ -73,7 +82,7 @@ void ShaderParameter::save(ArchiveBuffer& buffer) const
|
||||
void ShaderParameter::load(ArchiveBuffer& buffer)
|
||||
{
|
||||
ShaderExpression::load(buffer);
|
||||
Serialization::load(buffer, name);
|
||||
Serialization::load(buffer, key);
|
||||
Serialization::load(buffer, byteOffset);
|
||||
Serialization::load(buffer, binding);
|
||||
}
|
||||
@@ -109,7 +118,7 @@ void FloatParameter::updateDescriptorSet(Gfx::PDescriptorSet, uint8* dst)
|
||||
|
||||
void FloatParameter::generateDeclaration(std::ofstream& stream) const
|
||||
{
|
||||
stream << "\tlayout(offset = " << byteOffset << ") float " << name << ";\n";
|
||||
stream << "\tlayout(offset = " << byteOffset << ") float " << key << ";\n";
|
||||
}
|
||||
|
||||
VectorParameter::VectorParameter(std::string name, uint32 byteOffset, uint32 binding)
|
||||
@@ -131,7 +140,7 @@ void VectorParameter::updateDescriptorSet(Gfx::PDescriptorSet, uint8* dst)
|
||||
|
||||
void VectorParameter::generateDeclaration(std::ofstream& stream) const
|
||||
{
|
||||
stream << "\tlayout(offset = " << byteOffset << ") float3 " << name << ";\n";
|
||||
stream << "\tlayout(offset = " << byteOffset << ") float3 " << key << ";\n";
|
||||
}
|
||||
|
||||
void VectorParameter::save(ArchiveBuffer& buffer) const
|
||||
@@ -164,7 +173,7 @@ void TextureParameter::updateDescriptorSet(Gfx::PDescriptorSet descriptorSet, ui
|
||||
|
||||
void TextureParameter::generateDeclaration(std::ofstream& stream) const
|
||||
{
|
||||
stream << "\tTexture2D " << name << ";\n";
|
||||
stream << "\tTexture2D " << key << ";\n";
|
||||
}
|
||||
|
||||
void TextureParameter::save(ArchiveBuffer& buffer) const
|
||||
@@ -200,7 +209,7 @@ void SamplerParameter::updateDescriptorSet(Gfx::PDescriptorSet descriptorSet, ui
|
||||
|
||||
void SamplerParameter::generateDeclaration(std::ofstream& stream) const
|
||||
{
|
||||
stream << "\tSamplerState " << name << ";\n";
|
||||
stream << "\tSamplerState " << key << ";\n";
|
||||
}
|
||||
|
||||
void SamplerParameter::save(ArchiveBuffer& buffer) const
|
||||
@@ -233,7 +242,7 @@ void CombinedTextureParameter::updateDescriptorSet(Gfx::PDescriptorSet descripto
|
||||
|
||||
void CombinedTextureParameter::generateDeclaration(std::ofstream& stream) const
|
||||
{
|
||||
stream << "\tTexture2D " << name << ";\n";
|
||||
stream << "\tTexture2D " << key << ";\n";
|
||||
}
|
||||
|
||||
void CombinedTextureParameter::save(ArchiveBuffer& buffer) const
|
||||
@@ -267,9 +276,9 @@ ConstantExpression::~ConstantExpression()
|
||||
|
||||
}
|
||||
|
||||
std::string ConstantExpression::evaluate(Map<int32, std::string>& varState) const
|
||||
std::string ConstantExpression::evaluate(Map<std::string, std::string>& varState) const
|
||||
{
|
||||
std::string varName = std::format("const_exp_{}", std::abs(key));
|
||||
std::string varName = std::format("const_exp_{}", key);
|
||||
varState[key] = varName;
|
||||
return std::format("let {} = {};\n", varName, expr);
|
||||
}
|
||||
@@ -296,7 +305,7 @@ AddExpression::~AddExpression()
|
||||
|
||||
}
|
||||
|
||||
std::string AddExpression::evaluate(Map<int32, std::string>& varState) const
|
||||
std::string AddExpression::evaluate(Map<std::string, std::string>& varState) const
|
||||
{
|
||||
std::string varName = std::format("exp_{}", key);
|
||||
varState[key] = varName;
|
||||
@@ -313,7 +322,7 @@ void AddExpression::load(ArchiveBuffer& buffer)
|
||||
ShaderExpression::load(buffer);
|
||||
}
|
||||
|
||||
std::string SubExpression::evaluate(Map<int32, std::string>& varState) const
|
||||
std::string SubExpression::evaluate(Map<std::string, std::string>& varState) const
|
||||
{
|
||||
std::string varName = std::format("exp_{}", key);
|
||||
varState[key] = varName;
|
||||
@@ -330,7 +339,7 @@ void SubExpression::load(ArchiveBuffer& buffer)
|
||||
ShaderExpression::load(buffer);
|
||||
}
|
||||
|
||||
std::string MulExpression::evaluate(Map<int32, std::string>& varState) const
|
||||
std::string MulExpression::evaluate(Map<std::string, std::string>& varState) const
|
||||
{
|
||||
std::string varName = std::format("exp_{}", key);
|
||||
varState[key] = varName;
|
||||
@@ -347,7 +356,7 @@ void MulExpression::load(ArchiveBuffer& buffer)
|
||||
ShaderExpression::load(buffer);
|
||||
}
|
||||
|
||||
std::string SwizzleExpression::evaluate(Map<int32, std::string>& varState) const
|
||||
std::string SwizzleExpression::evaluate(Map<std::string, std::string>& varState) const
|
||||
{
|
||||
std::string varName = std::format("exp_{}", key);
|
||||
std::string swizzle = "";
|
||||
@@ -370,6 +379,7 @@ std::string SwizzleExpression::evaluate(Map<int32, std::string>& varState) const
|
||||
break;
|
||||
case 3:
|
||||
swizzle += "w";
|
||||
break;
|
||||
default:
|
||||
throw std::logic_error("invalid component");
|
||||
}
|
||||
@@ -390,7 +400,7 @@ void SwizzleExpression::load(ArchiveBuffer& buffer)
|
||||
Serialization::load(buffer, comp);
|
||||
}
|
||||
|
||||
std::string SampleExpression::evaluate(Map<int32, std::string>& varState) const
|
||||
std::string SampleExpression::evaluate(Map<std::string, std::string>& varState) const
|
||||
{
|
||||
std::string varName = std::format("exp_{}", key);
|
||||
varState[key] = varName;
|
||||
|
||||
@@ -18,7 +18,7 @@ enum class ExpressionType
|
||||
};
|
||||
struct ExpressionInput
|
||||
{
|
||||
int source;
|
||||
std::string source;
|
||||
ExpressionType type = ExpressionType::UNKNOWN;
|
||||
void save(ArchiveBuffer& buffer) const;
|
||||
void load(ArchiveBuffer& buffer);
|
||||
@@ -35,9 +35,11 @@ struct ShaderExpression
|
||||
{
|
||||
Map<std::string, ExpressionInput> inputs;
|
||||
ExpressionOutput output;
|
||||
int32 key;
|
||||
std::string key;
|
||||
ShaderExpression();
|
||||
ShaderExpression(std::string key);
|
||||
virtual uint64 getIdentifier() const = 0;
|
||||
virtual std::string evaluate(Map<int32, std::string>& varState) const = 0;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const = 0;
|
||||
virtual void save(ArchiveBuffer& buffer) const;
|
||||
virtual void load(ArchiveBuffer& buffer);
|
||||
};
|
||||
@@ -46,7 +48,6 @@ DEFINE_REF(ShaderExpression)
|
||||
DECLARE_NAME_REF(Gfx, DescriptorSet)
|
||||
struct ShaderParameter : public ShaderExpression
|
||||
{
|
||||
std::string name;
|
||||
uint32 byteOffset;
|
||||
uint32 binding;
|
||||
ShaderParameter() {}
|
||||
@@ -56,7 +57,7 @@ struct ShaderParameter : public ShaderExpression
|
||||
virtual void updateDescriptorSet(Gfx::PDescriptorSet descriptorSet, uint8* dst) = 0;
|
||||
virtual void generateDeclaration(std::ofstream& stream) const = 0;
|
||||
virtual uint64 getIdentifier() const = 0;
|
||||
virtual std::string evaluate(Map<int32, std::string>& varState) const override;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const override;
|
||||
virtual void save(ArchiveBuffer& buffer) const;
|
||||
virtual void load(ArchiveBuffer& buffer);
|
||||
};
|
||||
@@ -143,7 +144,7 @@ struct ConstantExpression : public ShaderExpression
|
||||
ConstantExpression(std::string expr, ExpressionType type);
|
||||
virtual ~ConstantExpression();
|
||||
virtual uint64 getIdentifier() const { return IDENTIFIER; }
|
||||
virtual std::string evaluate(Map<int32, std::string>& varState) const override;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const override;
|
||||
virtual void save(ArchiveBuffer& buffer) const override;
|
||||
virtual void load(ArchiveBuffer& buffer) override;
|
||||
};
|
||||
@@ -154,7 +155,7 @@ struct AddExpression : public ShaderExpression
|
||||
AddExpression();
|
||||
virtual ~AddExpression();
|
||||
virtual uint64 getIdentifier() const { return IDENTIFIER; }
|
||||
virtual std::string evaluate(Map<int32, std::string>& varState) const override;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const override;
|
||||
virtual void save(ArchiveBuffer& buffer) const override;
|
||||
virtual void load(ArchiveBuffer& buffer) override;
|
||||
};
|
||||
@@ -165,7 +166,7 @@ struct SubExpression : public ShaderExpression
|
||||
SubExpression() {}
|
||||
virtual ~SubExpression() {}
|
||||
virtual uint64 getIdentifier() const { return IDENTIFIER; }
|
||||
virtual std::string evaluate(Map<int32, std::string>& varState) const override;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const override;
|
||||
virtual void save(ArchiveBuffer& buffer) const override;
|
||||
virtual void load(ArchiveBuffer& buffer) override;
|
||||
};
|
||||
@@ -176,7 +177,7 @@ struct MulExpression : public ShaderExpression
|
||||
MulExpression() {}
|
||||
virtual ~MulExpression() {}
|
||||
virtual uint64 getIdentifier() const { return IDENTIFIER; }
|
||||
virtual std::string evaluate(Map<int32, std::string>& varState) const override;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const override;
|
||||
virtual void save(ArchiveBuffer& buffer) const override;
|
||||
virtual void load(ArchiveBuffer& buffer) override;
|
||||
};
|
||||
@@ -188,7 +189,7 @@ struct SwizzleExpression : public ShaderExpression
|
||||
SwizzleExpression() {}
|
||||
virtual ~SwizzleExpression() {}
|
||||
virtual uint64 getIdentifier() const { return IDENTIFIER; }
|
||||
virtual std::string evaluate(Map<int32, std::string>& varState) const override;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const override;
|
||||
virtual void save(ArchiveBuffer& buffer) const override;
|
||||
virtual void load(ArchiveBuffer& buffer) override;
|
||||
};
|
||||
@@ -199,7 +200,7 @@ struct SampleExpression : public ShaderExpression
|
||||
SampleExpression() {}
|
||||
virtual ~SampleExpression() {}
|
||||
virtual uint64 getIdentifier() const { return IDENTIFIER; }
|
||||
virtual std::string evaluate(Map<int32, std::string>& varState) const override;
|
||||
virtual std::string evaluate(Map<std::string, std::string>& varState) const override;
|
||||
virtual void save(ArchiveBuffer& buffer) const override;
|
||||
virtual void load(ArchiveBuffer& buffer) override;
|
||||
};
|
||||
@@ -208,7 +209,7 @@ DEFINE_REF(SampleExpression)
|
||||
struct MaterialNode
|
||||
{
|
||||
std::string profile;
|
||||
Map<std::string, OShaderExpression> variables;
|
||||
Map<std::string, std::string> variables;
|
||||
MaterialNode() {}
|
||||
~MaterialNode() {}
|
||||
void save(ArchiveBuffer& buffer) const;
|
||||
|
||||
Reference in New Issue
Block a user