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);
}
+2 -2
View File
@@ -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;
};
+3 -2
View File
@@ -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);
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -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();