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
+14 -14
View File
@@ -51,7 +51,7 @@ void MaterialLoader::import(MaterialImportArgs args, PMaterialAsset asset)
uint32 uniformBufferOffset = 0;
uint32 bindingCounter = 0; // Uniform buffers are always binding 0
int32 uniformBinding = -1;
Map<std::string, OShaderExpression> expressions;
Array<OShaderExpression> expressions;
uint32 key = 0;
uint32 auxKey = 0;
Array<std::string> parameters;
@@ -74,7 +74,7 @@ void MaterialLoader::import(MaterialImportArgs args, PMaterialAsset asset)
p->data = std::stof(defaultValue.value().get<std::string>());
}
parameters.add(p->key);
expressions[param.key()] = std::move(p);
expressions.add(std::move(p));
}
// TODO: ALIGNMENT RULES
else if(type.compare("float3") == 0)
@@ -91,7 +91,7 @@ void MaterialLoader::import(MaterialImportArgs args, PMaterialAsset asset)
p->data = parseVector(defaultValue.value().get<std::string>().c_str());
}
parameters.add(p->key);
expressions[param.key()] = std::move(p);
expressions.add(std::move(p));
}
else if(type.compare("Texture2D") == 0)
{
@@ -107,7 +107,7 @@ void MaterialLoader::import(MaterialImportArgs args, PMaterialAsset asset)
p->data = AssetRegistry::findTexture(""); // this will return placeholder texture
}
parameters.add(p->key);
expressions[param.key()] = std::move(p);
expressions.add(std::move(p));
}
else if(type.compare("SamplerState") == 0)
{
@@ -115,7 +115,7 @@ void MaterialLoader::import(MaterialImportArgs args, PMaterialAsset asset)
layout->addDescriptorBinding(bindingCounter++, Gfx::SE_DESCRIPTOR_TYPE_SAMPLER);
p->data = graphics->createSamplerState({});
parameters.add(p->key);
expressions[param.key()] = std::move(p);
expressions.add(std::move(p));
}
else
{
@@ -128,14 +128,14 @@ void MaterialLoader::import(MaterialImportArgs args, PMaterialAsset asset)
if(obj.is_string())
{
std::string str = obj.get<std::string>();
if (expressions.contains(str))
if (expressions.find([&str, &expressions](const OShaderExpression& exp) {return exp->key == str; }) != expressions.end())
{
return str;
}
OConstantExpression c = new ConstantExpression(str, ExpressionType::UNKNOWN);
std::string name = std::format("Const{0}", auxKey++);
c->key = name;
expressions[name] = std::move(c);
expressions.add(std::move(c));
return name;
}
else
@@ -156,7 +156,7 @@ void MaterialLoader::import(MaterialImportArgs args, PMaterialAsset asset)
p->key = name;
p->inputs["lhs"].source = referenceExpression(obj["lhs"]);
p->inputs["rhs"].source = referenceExpression(obj["rhs"]);
expressions[name] = std::move(p);
expressions.add(std::move(p));
}
if(exp.compare("Sub") == 0)
{
@@ -165,7 +165,7 @@ void MaterialLoader::import(MaterialImportArgs args, PMaterialAsset asset)
p->key = name;
p->inputs["lhs"].source = referenceExpression(obj["lhs"]);
p->inputs["rhs"].source = referenceExpression(obj["rhs"]);
expressions[name] = std::move(p);
expressions.add(std::move(p));
}
if(exp.compare("Mul") == 0)
{
@@ -174,12 +174,12 @@ void MaterialLoader::import(MaterialImportArgs args, PMaterialAsset asset)
p->key = name;
p->inputs["lhs"].source = referenceExpression(obj["lhs"]);
p->inputs["rhs"].source = referenceExpression(obj["rhs"]);
expressions[name] = std::move(p);
expressions.add(std::move(p));
}
if(exp.compare("Swizzle") == 0)
{
OSwizzleExpression p = new SwizzleExpression();
std::string name = std::format("{0}", key);
std::string name = std::format("{0}", key++);
p->key = name;
p->inputs["target"].source = referenceExpression(obj["target"]);
int32 i = 0;
@@ -187,17 +187,17 @@ void MaterialLoader::import(MaterialImportArgs args, PMaterialAsset asset)
{
p->comp[i++] = c.value().get<uint32>();
}
expressions[name] = std::move(p);
expressions.add(std::move(p));
}
if(exp.compare("Sample") == 0)
{
OSampleExpression p = new SampleExpression();
std::string name = std::format("{0}", key);
std::string name = std::format("{0}", key++);
p->key = name;
p->inputs["texture"].source = referenceExpression(obj["texture"]);
p->inputs["sampler"].source = referenceExpression(obj["sampler"]);
p->inputs["coords"].source = referenceExpression(obj["coords"]);
expressions[name] = std::move(p);
expressions.add(std::move(p));
}
if(exp.compare("BRDF") == 0)
{
+10
View File
@@ -155,6 +155,7 @@ void MeshLoader::loadGlobalMeshes(const aiScene* scene, const Array<PMaterialIns
Array<Vector> normals(mesh->mNumVertices);
Array<Vector> tangents(mesh->mNumVertices);
Array<Vector> biTangents(mesh->mNumVertices);
Array<Vector> colors(mesh->mNumVertices);
StaticMeshVertexData* vertexData = StaticMeshVertexData::getInstance();
@@ -165,6 +166,14 @@ void MeshLoader::loadGlobalMeshes(const aiScene* scene, const Array<PMaterialIns
normals[i] = Vector(mesh->mNormals[i].x, mesh->mNormals[i].y, mesh->mNormals[i].z);
tangents[i] = Vector(mesh->mTangents[i].x, mesh->mTangents[i].y, mesh->mTangents[i].z);
biTangents[i] = Vector(mesh->mBitangents[i].x, mesh->mBitangents[i].y, mesh->mBitangents[i].z);
if(mesh->HasVertexColors(0))
{
colors[i] = Vector(mesh->mColors[0][i].r, mesh->mColors[0][i].g, mesh->mColors[0][i].b);
}
else
{
colors[i] = Vector(1, 1, 1);
}
}
MeshId id = vertexData->allocateVertexData(mesh->mNumVertices);
@@ -173,6 +182,7 @@ void MeshLoader::loadGlobalMeshes(const aiScene* scene, const Array<PMaterialIns
vertexData->loadNormals(id, normals);
vertexData->loadTangents(id, tangents);
vertexData->loadBiTangents(id, biTangents);
vertexData->loadColors(id, colors);
Array<uint32> indices(mesh->mNumFaces * 3);
for (size_t faceIndex = 0; faceIndex < mesh->mNumFaces; ++faceIndex)