THERE IS SOMETHING ON SCREEN
This commit is contained in:
@@ -14,7 +14,7 @@ Material::Material(Gfx::PGraphics graphics,
|
||||
uint32 uniformDataSize,
|
||||
uint32 uniformBinding,
|
||||
std::string materialName,
|
||||
Map<std::string, OShaderExpression> expressions,
|
||||
Array<OShaderExpression> expressions,
|
||||
Array<std::string> parameter,
|
||||
MaterialNode brdf)
|
||||
: graphics(graphics)
|
||||
@@ -112,14 +112,15 @@ void Material::compile()
|
||||
codeStream << "struct " << materialName << " : IMaterial {\n";
|
||||
for(const auto& parameter : parameters)
|
||||
{
|
||||
PShaderParameter handle = PShaderExpression(codeExpressions[parameter]);
|
||||
PShaderParameter handle = PShaderExpression(*codeExpressions.find([¶meter](const OShaderExpression& exp) {return exp->key == parameter; }));
|
||||
handle->generateDeclaration(codeStream);
|
||||
}
|
||||
codeStream << "\ttypedef " << brdf.profile << " BRDF;\n";
|
||||
codeStream << "\t" << brdf.profile << " prepare(MaterialParameter input) {\n";
|
||||
codeStream << "\t\t" << brdf.profile << " result;\n";
|
||||
Map<std::string, std::string> varState;
|
||||
for(const auto& [_, expr] :codeExpressions)
|
||||
// initialize variable state
|
||||
for(const auto& expr :codeExpressions)
|
||||
{
|
||||
codeStream << expr->evaluate(varState);
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ public:
|
||||
uint32 uniformDataSize,
|
||||
uint32 uniformBinding,
|
||||
std::string materialName,
|
||||
Map<std::string, OShaderExpression> expressions,
|
||||
Array<OShaderExpression> expressions,
|
||||
Array<std::string> parameter,
|
||||
MaterialNode brdf);
|
||||
~Material();
|
||||
@@ -34,7 +34,7 @@ private:
|
||||
uint64 instanceId;
|
||||
Gfx::ODescriptorLayout layout;
|
||||
std::string materialName;
|
||||
Map<std::string, OShaderExpression> codeExpressions;
|
||||
Array<OShaderExpression> codeExpressions;
|
||||
Array<std::string> parameters;
|
||||
MaterialNode brdf;
|
||||
};
|
||||
|
||||
@@ -10,7 +10,7 @@ MaterialInstance::MaterialInstance()
|
||||
|
||||
MaterialInstance::MaterialInstance(uint64 id,
|
||||
Gfx::PGraphics graphics,
|
||||
Map<std::string, OShaderExpression>& expressions,
|
||||
Array<OShaderExpression>& expressions,
|
||||
Array<std::string> params,
|
||||
uint32 uniformBinding,
|
||||
uint32 uniformSize)
|
||||
@@ -33,7 +33,8 @@ MaterialInstance::MaterialInstance(uint64 id,
|
||||
parameters.reserve(params.size());
|
||||
for (size_t i = 0; i < params.size(); ++i)
|
||||
{
|
||||
Serialization::save(buffer, expressions[params[i]]);
|
||||
const std::string& name = params[i];
|
||||
Serialization::save(buffer, *expressions.find([&name](const OShaderExpression& p) {return p->key == name; }));
|
||||
buffer.rewind();
|
||||
OShaderParameter param;
|
||||
Serialization::load(buffer, param);
|
||||
|
||||
@@ -11,7 +11,7 @@ public:
|
||||
MaterialInstance();
|
||||
MaterialInstance(uint64 id,
|
||||
Gfx::PGraphics graphics,
|
||||
Map<std::string, OShaderExpression>& expressions,
|
||||
Array<OShaderExpression>& expressions,
|
||||
Array<std::string> params,
|
||||
uint32 uniformBinding,
|
||||
uint32 uniformSize);
|
||||
|
||||
@@ -109,7 +109,7 @@ DECLARE_NAME_REF(Gfx, SamplerState)
|
||||
struct SamplerParameter : public ShaderParameter
|
||||
{
|
||||
static constexpr uint64 IDENTIFIER = 0x08;
|
||||
Gfx::PSamplerState data;
|
||||
Gfx::OSamplerState data;
|
||||
SamplerParameter() {}
|
||||
SamplerParameter(std::string name, uint32 byteOffset, uint32 binding);
|
||||
virtual ~SamplerParameter();
|
||||
|
||||
Reference in New Issue
Block a user