THE STREET FINALLY RENDERS

This commit is contained in:
Dynamitos
2024-04-26 19:32:38 +02:00
parent 93ab9e38f0
commit ab2bdfbd0e
12 changed files with 37 additions and 44 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
import Common;
import LightEnv;
import Material;
import MaterialParameter;
import MATERIAL_FILE_NAME;
struct LightCullingData
{
+5 -7
View File
@@ -2,10 +2,8 @@ import Common;
import BRDF;
import MaterialParameter;
interface IMaterial
{
associatedtype BRDF : IBRDF;
BRDF prepare(MaterialParameter input);
};
layout(set=4)
ParameterBlock<IMaterial> pMaterial;
//interface IMaterial
//{
// associatedtype BRDF : IBRDF;
// BRDF prepare(MaterialParameter input);
//};
+14 -5
View File
@@ -77,14 +77,19 @@ void MeshLoader::loadMaterials(const aiScene* scene, const std::string& baseName
});
matCode["params"]["diffuseTexture"] =
{
{"type", "Sampler2D"},
{"type", "Texture2D"},
{"default", fmt::format("{0}/{1}", importPath, texFilename.string())}
};
matCode["params"]["diffuseSampler"] =
{
{"type", "Sampler"}
};
matCode["code"].push_back(
{
{ "exp", "Sample" },
{ "sampler", "diffuseTexture" },
{ "coords", "input.texCoords"}
{ "texture", "diffuseTexture" },
{ "sampler", "diffuseSampler" },
{ "coords", "input.texCoords" }
}
);
++codeIndex;
@@ -117,13 +122,17 @@ void MeshLoader::loadMaterials(const aiScene* scene, const std::string& baseName
});
matCode["params"]["normalTexture"] =
{
{"type", "Sampler2D"},
{"type", "Texture2D"},
{"default", fmt::format("{0}/{1}", importPath, texFilename.string())}
};
matCode["params"]["normalSampler"] = {
{"type", "Sampler"},
};
matCode["code"].push_back(
{
{ "exp", "Sample" },
{ "sampler", "normalTexture" },
{ "texture", "normalTexture" },
{ "sampler", "normalSampler" },
{ "coords", "input.texCoords" }
}
);
+1
View File
@@ -48,6 +48,7 @@ int main() {
graphics->init(initializer);
StaticMeshVertexData* vd = StaticMeshVertexData::getInstance();
vd->init(graphics);
OWindowManager windowManager = new WindowManager();
AssetRegistry::init(sourcePath / "Assets", graphics);
AssetImporter::init(graphics);
@@ -126,7 +126,6 @@ void DebugPass::createRenderPass()
ShaderCreateInfo createInfo = {
.name = "DebugVertex",
.mainModule = "Debug",
.additionalModules = { "Debug" },
.entryPoint = "vertexMain",
};
vertexShader = graphics->createVertexShader(createInfo);
@@ -127,7 +127,6 @@ void LightCullingPass::publishOutputs()
ShaderCreateInfo createInfo = {
.name = "Culling",
.mainModule = "LightCulling",
.additionalModules = {"LightCulling"},
.entryPoint = "cullLights",
.rootSignature = cullingLayout,
};
@@ -215,7 +214,6 @@ void LightCullingPass::setupFrustums()
ShaderCreateInfo createInfo = {
.name = "Frustum",
.mainModule = "ComputeFrustums",
.additionalModules = {"ComputeFrustums"},
.entryPoint = "computeFrustums",
.rootSignature = frustumLayout,
};
@@ -113,7 +113,6 @@ void SkyboxRenderPass::createRenderPass()
ShaderCreateInfo createInfo = {
.name = "SkyboxVertex",
.mainModule = "Skybox",
.additionalModules = {"Skybox"},
.entryPoint = "vertexMain",
};
vertexShader = graphics->createVertexShader(createInfo);
+5 -5
View File
@@ -110,11 +110,11 @@ void TextPass::createRenderPass()
renderTarget = resources->requestRenderTarget("UIPASS_COLOR");
depthAttachment = resources->requestRenderTarget("UIPASS_DEPTH");
ShaderCreateInfo createInfo;
createInfo.mainModule = "TextPass";
createInfo.defines["INDEX_VIEW_PARAMS"] = "0";
createInfo.name = "TextVertex";
createInfo.entryPoint = "vertexMain";
ShaderCreateInfo createInfo = {
.name = "TextVertex",
.mainModule = "TextPass",
.entryPoint = "vertexMain",
};
vertexShader = graphics->createVertexShader(createInfo);
createInfo.name = "TextFragment";
+5 -4
View File
@@ -96,10 +96,11 @@ void UIPass::publishOutputs()
void UIPass::createRenderPass()
{
ShaderCreateInfo createInfo;
createInfo.mainModule = "UIPass";
createInfo.name = "UIVertex";
createInfo.entryPoint = "vertexMain";
ShaderCreateInfo createInfo = {
.name = "UIVertex",
.mainModule = "UIPass",
.entryPoint = "vertexMain",
};
vertexShader = graphics->createVertexShader(createInfo);
createInfo.name = "UIFragment";
+1 -10
View File
@@ -111,19 +111,10 @@ void ShaderCompiler::createShaders(ShaderPermutation permutation, Gfx::OPipeline
if (std::strlen(permutation.materialName) > 0)
{
createInfo.additionalModules.add(permutation.materialName);
createInfo.typeParameter.add(Pair<const char*, const char*>("IMaterial", permutation.materialName));
createInfo.defines["MATERIAL_FILE_NAME"] = permutation.materialName;
}
createInfo.typeParameter.add({ Pair<const char*, const char*>("IVertexData", permutation.vertexDataName) });
createInfo.additionalModules.add(permutation.vertexDataName);
createInfo.additionalModules.add(permutation.vertexMeshFile);
if (permutation.hasFragment)
{
createInfo.additionalModules.add(permutation.fragmentFile);
}
if (permutation.hasTaskShader)
{
createInfo.additionalModules.add(permutation.taskFile);
}
if (permutation.useMeshShading)
{
+2 -6
View File
@@ -52,17 +52,13 @@ Slang::ComPtr<slang::IBlob> Seele::generateShader(const ShaderCreateInfo& create
Slang::ComPtr<slang::IBlob> diagnostics;
Array<slang::IComponentType*> modules;
Slang::ComPtr<slang::IEntryPoint> entrypoint;
slang::IModule* mainModule = nullptr;
for (const auto& moduleName : createInfo.additionalModules)
{
modules.add(session->loadModule(moduleName.c_str(), diagnostics.writeRef()));
if (moduleName == createInfo.mainModule)
{
mainModule = (slang::IModule*)modules.back();
}
CHECK_DIAGNOSTICS();
}
slang::IModule* mainModule = session->loadModule(createInfo.mainModule.c_str(), diagnostics.writeRef());
modules.add(mainModule);
CHECK_DIAGNOSTICS();
mainModule->findEntryPointByName(createInfo.entryPoint.c_str(), entrypoint.writeRef());
+3 -2
View File
@@ -114,10 +114,9 @@ void Material::load(ArchiveBuffer& buffer)
void Material::compile()
{
std::ofstream codeStream("./shaders/generated/"+materialName+".slang");
codeStream << "import Material;\n";
codeStream << "import BRDF;\n";
codeStream << "import MaterialParameter;\n";
codeStream << "struct " << materialName << " : IMaterial {\n";
codeStream << "struct " << materialName << "{\n";
for(const auto& parameter : parameters)
{
PShaderParameter handle = PShaderExpression(*codeExpressions.find([&parameter](const OShaderExpression& exp) {return exp->key == parameter; }));
@@ -139,5 +138,7 @@ void Material::compile()
codeStream << "\t\treturn result;\n";
codeStream << "\t}\n";
codeStream << "};\n";
codeStream << "layout(set=4)";
codeStream << "ParameterBlock<" << materialName << "> pMaterial;";
graphics->getShaderCompiler()->registerMaterial(this);
}