THERE IS SOMETHING ON SCREEN

This commit is contained in:
Dynamitos
2023-11-11 22:39:17 +01:00
parent 4c05886d38
commit a9ac3d14a7
18 changed files with 85 additions and 36 deletions
+4 -3
View File
@@ -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([&parameter](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);
}