Shaders are not compiling anymore...
This commit is contained in:
@@ -48,48 +48,67 @@ void MeshLoader::loadMaterials(const aiScene* scene, const std::string& baseName
|
||||
{
|
||||
aiMaterial* material = scene->mMaterials[i];
|
||||
json matCode;
|
||||
std::string materialName = std::format("{0}{1}", baseName, material->GetName().C_Str());
|
||||
std::string materialName = std::format("{0}{1}{2}", baseName, material->GetName().C_Str(), char(i+'a'));
|
||||
materialName.erase(std::remove(materialName.begin(), materialName.end(), '.'), materialName.end()); // dots break adding the .asset extension later
|
||||
matCode["name"] = materialName;
|
||||
matCode["profile"] = "BlinnPhong"; //TODO: other shading models
|
||||
aiString texPath;
|
||||
//TODO make samplers based on used textures
|
||||
if(material->GetTexture(aiTextureType_DIFFUSE, 0, &texPath) == AI_SUCCESS)
|
||||
{
|
||||
std::string texFilename = std::filesystem::path(texPath.C_Str()).stem().string();
|
||||
matCode["params"]["diffuseTexture"] =
|
||||
{
|
||||
{"type", "Texture2D"},
|
||||
{"default", texFilename}
|
||||
};
|
||||
matCode["params"]["diffuseSampler"] =
|
||||
auto texFilename = std::filesystem::path(texPath.C_Str()).stem();
|
||||
if (texFilename == "white")
|
||||
{
|
||||
{"type", "SamplerState"}
|
||||
};
|
||||
matCode["code"].push_back(
|
||||
matCode["code"].push_back(
|
||||
{
|
||||
{ "exp", "BRDF" },
|
||||
{ "profile", "BlinnPhong" },
|
||||
{ "values", {
|
||||
{"baseColor", "float3(1, 1, 1)"}
|
||||
}}
|
||||
}
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
AssetImporter::importTexture(TextureImportArgs{
|
||||
.filePath = meshDirectory / texPath.C_Str(),
|
||||
.importPath = importPath,
|
||||
});
|
||||
matCode["params"]["diffuseTexture"] =
|
||||
{
|
||||
{ "exp", "Sample" },
|
||||
{ "texture", "diffuseTexture" },
|
||||
{ "sampler", "diffuseSampler" },
|
||||
{ "coords", "input.texCoords[0]"}
|
||||
}
|
||||
);
|
||||
matCode["code"].push_back(
|
||||
{"type", "Texture2D"},
|
||||
{"default", texFilename.string()}
|
||||
};
|
||||
matCode["params"]["diffuseSampler"] =
|
||||
{
|
||||
{ "exp", "Swizzle" },
|
||||
{ "target", 0 },
|
||||
{ "comp", json::array({0, 1, 2}) },
|
||||
}
|
||||
);
|
||||
matCode["code"].push_back(
|
||||
{
|
||||
{ "exp", "BRDF" },
|
||||
{ "profile", "BlinnPhong" },
|
||||
{ "values", {
|
||||
{"baseColor", 1}
|
||||
}}
|
||||
}
|
||||
);
|
||||
{"type", "Sampler"}
|
||||
};
|
||||
matCode["code"].push_back(
|
||||
{
|
||||
{ "exp", "Sample" },
|
||||
{ "texture", "diffuseTexture" },
|
||||
{ "sampler", "diffuseSampler" },
|
||||
{ "coords", "input.texCoords[0]"}
|
||||
}
|
||||
);
|
||||
matCode["code"].push_back(
|
||||
{
|
||||
{ "exp", "Swizzle" },
|
||||
{ "target", 0 },
|
||||
{ "comp", json::array({0, 1, 2}) },
|
||||
}
|
||||
);
|
||||
matCode["code"].push_back(
|
||||
{
|
||||
{ "exp", "BRDF" },
|
||||
{ "profile", "BlinnPhong" },
|
||||
{ "values", {
|
||||
{"baseColor", 1}
|
||||
}}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -109,7 +128,7 @@ void MeshLoader::loadMaterials(const aiScene* scene, const std::string& baseName
|
||||
if(material->GetTexture(aiTextureType_NORMALS, 0, &texPath) == AI_SUCCESS)
|
||||
{
|
||||
}
|
||||
std::string outMatFilename = matCode["name"].get<std::string>().append(".json");
|
||||
std::string outMatFilename = materialName.append(".json");
|
||||
std::ofstream outMatFile = std::ofstream(meshDirectory / outMatFilename);
|
||||
outMatFile << std::setw(4) << matCode;
|
||||
outMatFile.flush();
|
||||
|
||||
+23
-13
@@ -58,6 +58,9 @@ int main()
|
||||
AssetImporter::importMesh(MeshImportArgs{
|
||||
.filePath= sourcePath / "old_resources/models/cube.fbx",
|
||||
});
|
||||
AssetImporter::importMesh(MeshImportArgs{
|
||||
.filePath = sourcePath / "old_resources/models/sponza/sponza.gltf",
|
||||
});
|
||||
//AssetImporter::importMesh(MeshImportArgs{
|
||||
// .filePath= sourcePath / "old_resources/models/flameThrower.fbx",
|
||||
// });
|
||||
@@ -238,21 +241,28 @@ int main()
|
||||
//window->addView(inspectorView);
|
||||
sceneView->setFocused();
|
||||
|
||||
window->render();
|
||||
//export game
|
||||
|
||||
std::filesystem::create_directories(outputPath);
|
||||
std::system(std::format("cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DGAME_TITLE=\"{}\" -DGAME_DESTINATION=\"{}\" -DGAME_BINARY=\"{}\" -P ./cmake/ExportProject.cmake", gameName, outputPath.generic_string(), binaryPath.generic_string()).c_str());
|
||||
std::system(std::format("cmake -S {} -B {}", cmakePath.generic_string(), cmakePath.generic_string()).c_str());
|
||||
std::system(std::format("cmake --build {}", cmakePath.generic_string()).c_str());
|
||||
std::filesystem::copy(sourcePath / "Assets", outputPath / "Assets", std::filesystem::copy_options::recursive);
|
||||
std::filesystem::copy("shaders", outputPath / "shaders", std::filesystem::copy_options::recursive);
|
||||
std::filesystem::copy("textures", outputPath / "textures", std::filesystem::copy_options::recursive);
|
||||
while (windowManager->isActive())
|
||||
{
|
||||
windowManager->render();
|
||||
}
|
||||
vd->~StaticMeshVertexData();
|
||||
//export game
|
||||
if (false)
|
||||
{
|
||||
std::filesystem::create_directories(outputPath);
|
||||
std::system(std::format("cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DGAME_TITLE=\"{}\" -DGAME_DESTINATION=\"{}\" -DGAME_BINARY=\"{}\" -P ./cmake/ExportProject.cmake", gameName, outputPath.generic_string(), binaryPath.generic_string()).c_str());
|
||||
std::system(std::format("cmake -S {} -B {}", cmakePath.generic_string(), cmakePath.generic_string()).c_str());
|
||||
std::system(std::format("cmake --build {}", cmakePath.generic_string()).c_str());
|
||||
std::filesystem::copy(sourcePath / "Assets", outputPath / "Assets", std::filesystem::copy_options::recursive);
|
||||
std::filesystem::copy("shaders", outputPath / "shaders", std::filesystem::copy_options::recursive);
|
||||
std::filesystem::copy("textures", outputPath / "textures", std::filesystem::copy_options::recursive);
|
||||
#ifdef WIN32
|
||||
std::filesystem::copy_file("assimp-vc143-mt.dll", outputPath / "assimp-vc143-mt.dll");
|
||||
std::filesystem::copy_file("slang.dll", outputPath / "slang.dll");
|
||||
std::filesystem::copy_file("slang-glslang.dll", outputPath / "slang-glslang.dll");
|
||||
std::filesystem::copy_file("slang-llvm.dll", outputPath / "slang-llvm.dll");
|
||||
std::filesystem::copy_file("assimp-vc143-mt.dll", outputPath / "assimp-vc143-mt.dll");
|
||||
std::filesystem::copy_file("slang.dll", outputPath / "slang.dll");
|
||||
std::filesystem::copy_file("slang-glslang.dll", outputPath / "slang-glslang.dll");
|
||||
std::filesystem::copy_file("slang-llvm.dll", outputPath / "slang-llvm.dll");
|
||||
#endif
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user