Make changes for breaking NZSL update

Fix build

Fix compilation (again)

Fix global included

TextureAsset belongs to another branch

Add missing include

Fix include (should be good, finally)
This commit is contained in:
SirLynix 2023-12-17 17:32:22 +01:00
parent 87bf4563f2
commit 83366e93d4
10 changed files with 36 additions and 28 deletions

View File

@ -95,7 +95,6 @@
#include <Nazara/Graphics/SpriteChainRenderer.hpp> #include <Nazara/Graphics/SpriteChainRenderer.hpp>
#include <Nazara/Graphics/SubmeshRenderer.hpp> #include <Nazara/Graphics/SubmeshRenderer.hpp>
#include <Nazara/Graphics/TextSprite.hpp> #include <Nazara/Graphics/TextSprite.hpp>
#include <Nazara/Graphics/TextureAsset.hpp>
#include <Nazara/Graphics/TextureSamplerCache.hpp> #include <Nazara/Graphics/TextureSamplerCache.hpp>
#include <Nazara/Graphics/Tilemap.hpp> #include <Nazara/Graphics/Tilemap.hpp>
#include <Nazara/Graphics/TransferInterface.hpp> #include <Nazara/Graphics/TransferInterface.hpp>

View File

@ -19,6 +19,7 @@
#include <Nazara/Utility/UniformBuffer.hpp> #include <Nazara/Utility/UniformBuffer.hpp>
#include <NazaraUtils/Signal.hpp> #include <NazaraUtils/Signal.hpp>
#include <NZSL/Ast/ConstantValue.hpp> #include <NZSL/Ast/ConstantValue.hpp>
#include <NZSL/Ast/Option.hpp>
#include <array> #include <array>
#include <memory> #include <memory>
#include <string> #include <string>
@ -30,7 +31,7 @@ namespace Nz
{ {
MaterialPassFlags flags; MaterialPassFlags flags;
RenderStates states; RenderStates states;
std::unordered_map<UInt32, nzsl::Ast::ConstantSingleValue> options; std::unordered_map<nzsl::Ast::OptionHash, nzsl::Ast::ConstantSingleValue> options;
std::vector<std::shared_ptr<UberShader>> shaders; std::vector<std::shared_ptr<UberShader>> shaders;
}; };
} }

View File

@ -12,6 +12,7 @@
#include <Nazara/Renderer/RenderPipelineLayout.hpp> #include <Nazara/Renderer/RenderPipelineLayout.hpp>
#include <NZSL/Ast/Module.hpp> #include <NZSL/Ast/Module.hpp>
#include <NZSL/Ast/RecursiveVisitor.hpp> #include <NZSL/Ast/RecursiveVisitor.hpp>
#include <NZSL/Ast/Option.hpp>
#include <NZSL/Math/FieldOffsets.hpp> #include <NZSL/Math/FieldOffsets.hpp>
#include <unordered_map> #include <unordered_map>
@ -82,7 +83,7 @@ namespace Nz
struct OptionData struct OptionData
{ {
nzsl::Ast::ExpressionType type; nzsl::Ast::ExpressionType type;
UInt32 hash; nzsl::Ast::OptionHash hash;
}; };
struct StructMemberData struct StructMemberData

View File

@ -14,6 +14,7 @@
#include <NazaraUtils/Signal.hpp> #include <NazaraUtils/Signal.hpp>
#include <NZSL/ModuleResolver.hpp> #include <NZSL/ModuleResolver.hpp>
#include <NZSL/Ast/Module.hpp> #include <NZSL/Ast/Module.hpp>
#include <NZSL/Ast/Option.hpp>
#include <unordered_map> #include <unordered_map>
#include <unordered_set> #include <unordered_set>
@ -59,7 +60,7 @@ namespace Nz
struct Option struct Option
{ {
UInt32 hash; nzsl::Ast::OptionHash hash;
}; };
NazaraSignal(OnShaderUpdated, UberShader* /*uberShader*/); NazaraSignal(OnShaderUpdated, UberShader* /*uberShader*/);

View File

@ -256,6 +256,8 @@ namespace Nz
void Graphics::BuildDefaultMaterials() void Graphics::BuildDefaultMaterials()
{ {
using namespace nzsl::Ast::Literals;
std::size_t depthPassIndex = m_materialPassRegistry.GetPassIndex("DepthPass"); std::size_t depthPassIndex = m_materialPassRegistry.GetPassIndex("DepthPass");
std::size_t shadowPassIndex = m_materialPassRegistry.GetPassIndex("ShadowPass"); std::size_t shadowPassIndex = m_materialPassRegistry.GetPassIndex("ShadowPass");
std::size_t distanceShadowPassIndex = m_materialPassRegistry.GetPassIndex("DistanceShadowPass"); std::size_t distanceShadowPassIndex = m_materialPassRegistry.GetPassIndex("DistanceShadowPass");
@ -274,17 +276,17 @@ namespace Nz
settings.AddPass(forwardPassIndex, forwardPass); settings.AddPass(forwardPassIndex, forwardPass);
MaterialPass depthPass = forwardPass; MaterialPass depthPass = forwardPass;
depthPass.options[CRC32("DepthPass")] = true; depthPass.options["DepthPass"_opt] = true;
settings.AddPass(depthPassIndex, depthPass); settings.AddPass(depthPassIndex, depthPass);
MaterialPass shadowPass = depthPass; MaterialPass shadowPass = depthPass;
shadowPass.options[CRC32("ShadowPass")] = true; shadowPass.options["ShadowPass"_opt] = true;
shadowPass.states.frontFace = FrontFace::Clockwise; shadowPass.states.frontFace = FrontFace::Clockwise;
shadowPass.states.depthClamp = enabledFeatures.depthClamping; shadowPass.states.depthClamp = enabledFeatures.depthClamping;
settings.AddPass(shadowPassIndex, shadowPass); settings.AddPass(shadowPassIndex, shadowPass);
MaterialPass distanceShadowPass = shadowPass; MaterialPass distanceShadowPass = shadowPass;
distanceShadowPass.options[CRC32("DistanceDepth")] = true; distanceShadowPass.options["DistanceDepth"_opt] = true;
settings.AddPass(distanceShadowPassIndex, distanceShadowPass); settings.AddPass(distanceShadowPassIndex, distanceShadowPass);
m_defaultMaterials.materials[MaterialType::Basic].material = std::make_shared<Material>(std::move(settings), "BasicMaterial"); m_defaultMaterials.materials[MaterialType::Basic].material = std::make_shared<Material>(std::move(settings), "BasicMaterial");
@ -302,17 +304,17 @@ namespace Nz
settings.AddPass(forwardPassIndex, forwardPass); settings.AddPass(forwardPassIndex, forwardPass);
MaterialPass depthPass = forwardPass; MaterialPass depthPass = forwardPass;
depthPass.options[CRC32("DepthPass")] = true; depthPass.options["DepthPass"_opt] = true;
settings.AddPass(depthPassIndex, depthPass); settings.AddPass(depthPassIndex, depthPass);
MaterialPass shadowPass = depthPass; MaterialPass shadowPass = depthPass;
shadowPass.options[CRC32("ShadowPass")] = true; shadowPass.options["ShadowPass"_opt] = true;
shadowPass.states.frontFace = FrontFace::Clockwise; shadowPass.states.frontFace = FrontFace::Clockwise;
shadowPass.states.depthClamp = enabledFeatures.depthClamping; shadowPass.states.depthClamp = enabledFeatures.depthClamping;
settings.AddPass(shadowPassIndex, shadowPass); settings.AddPass(shadowPassIndex, shadowPass);
MaterialPass distanceShadowPass = shadowPass; MaterialPass distanceShadowPass = shadowPass;
distanceShadowPass.options[CRC32("DistanceDepth")] = true; distanceShadowPass.options["DistanceDepth"_opt] = true;
settings.AddPass(distanceShadowPassIndex, distanceShadowPass); settings.AddPass(distanceShadowPassIndex, distanceShadowPass);
m_defaultMaterials.materials[MaterialType::PhysicallyBased].material = std::make_shared<Material>(std::move(settings), "PhysicallyBasedMaterial"); m_defaultMaterials.materials[MaterialType::PhysicallyBased].material = std::make_shared<Material>(std::move(settings), "PhysicallyBasedMaterial");
@ -330,17 +332,17 @@ namespace Nz
settings.AddPass(forwardPassIndex, forwardPass); settings.AddPass(forwardPassIndex, forwardPass);
MaterialPass depthPass = forwardPass; MaterialPass depthPass = forwardPass;
depthPass.options[CRC32("DepthPass")] = true; depthPass.options["DepthPass"_opt] = true;
settings.AddPass(depthPassIndex, depthPass); settings.AddPass(depthPassIndex, depthPass);
MaterialPass shadowPass = depthPass; MaterialPass shadowPass = depthPass;
shadowPass.options[CRC32("ShadowPass")] = true; shadowPass.options["ShadowPass"_opt] = true;
shadowPass.states.frontFace = FrontFace::Clockwise; shadowPass.states.frontFace = FrontFace::Clockwise;
shadowPass.states.depthClamp = enabledFeatures.depthClamping; shadowPass.states.depthClamp = enabledFeatures.depthClamping;
settings.AddPass(shadowPassIndex, shadowPass); settings.AddPass(shadowPassIndex, shadowPass);
MaterialPass distanceShadowPass = shadowPass; MaterialPass distanceShadowPass = shadowPass;
distanceShadowPass.options[CRC32("DistanceDepth")] = true; distanceShadowPass.options["DistanceDepth"_opt] = true;
settings.AddPass(distanceShadowPassIndex, distanceShadowPass); settings.AddPass(distanceShadowPassIndex, distanceShadowPass);
m_defaultMaterials.materials[MaterialType::Phong].material = std::make_shared<Material>(std::move(settings), "PhongMaterial"); m_defaultMaterials.materials[MaterialType::Phong].material = std::make_shared<Material>(std::move(settings), "PhongMaterial");

View File

@ -26,6 +26,8 @@ namespace Nz
Material::Material(MaterialSettings settings, const nzsl::Ast::ModulePtr& referenceModule) : Material::Material(MaterialSettings settings, const nzsl::Ast::ModulePtr& referenceModule) :
m_settings(std::move(settings)) m_settings(std::move(settings))
{ {
using namespace nzsl::Ast::Literals;
NazaraAssert(referenceModule, "invalid module"); NazaraAssert(referenceModule, "invalid module");
Graphics* graphics = Graphics::Instance(); Graphics* graphics = Graphics::Instance();
@ -36,9 +38,9 @@ namespace Nz
options.forceAutoBindingResolve = true; options.forceAutoBindingResolve = true;
options.partialSanitization = true; options.partialSanitization = true;
options.moduleResolver = graphics->GetShaderModuleResolver(); options.moduleResolver = graphics->GetShaderModuleResolver();
options.optionValues[CRC32("MaxLightCount")] = SafeCast<UInt32>(PredefinedLightData::MaxLightCount); options.optionValues["MaxLightCount"_opt] = SafeCast<UInt32>(PredefinedLightData::MaxLightCount);
options.optionValues[CRC32("MaxLightCascadeCount")] = SafeCast<UInt32>(PredefinedDirectionalLightData::MaxLightCascadeCount); options.optionValues["MaxLightCascadeCount"_opt] = SafeCast<UInt32>(PredefinedDirectionalLightData::MaxLightCascadeCount);
options.optionValues[CRC32("MaxJointCount")] = SafeCast<UInt32>(PredefinedSkeletalData::MaxMatricesCount); options.optionValues["MaxJointCount"_opt] = SafeCast<UInt32>(PredefinedSkeletalData::MaxMatricesCount);
nzsl::Ast::ModulePtr sanitizedModule = nzsl::Ast::Sanitize(*referenceModule, options); nzsl::Ast::ModulePtr sanitizedModule = nzsl::Ast::Sanitize(*referenceModule, options);
@ -123,6 +125,8 @@ namespace Nz
{ {
uberShader->UpdateConfigCallback([=](UberShader::Config& config, const std::vector<RenderPipelineInfo::VertexBufferData>& vertexBuffers) uberShader->UpdateConfigCallback([=](UberShader::Config& config, const std::vector<RenderPipelineInfo::VertexBufferData>& vertexBuffers)
{ {
using namespace nzsl::Ast::Literals;
if (vertexBuffers.empty()) if (vertexBuffers.empty())
return; return;
@ -135,35 +139,35 @@ namespace Nz
switch (component.component) switch (component.component)
{ {
case VertexComponent::Color: case VertexComponent::Color:
config.optionValues[CRC32("VertexColorLoc")] = locationIndex; config.optionValues["VertexColorLoc"_opt] = locationIndex;
break; break;
case VertexComponent::Normal: case VertexComponent::Normal:
config.optionValues[CRC32("VertexNormalLoc")] = locationIndex; config.optionValues["VertexNormalLoc"_opt] = locationIndex;
break; break;
case VertexComponent::Position: case VertexComponent::Position:
config.optionValues[CRC32("VertexPositionLoc")] = locationIndex; config.optionValues["VertexPositionLoc"_opt] = locationIndex;
break; break;
case VertexComponent::SizeSinCos: case VertexComponent::SizeSinCos:
config.optionValues[CRC32("VertexSizeRotLocation")] = locationIndex; config.optionValues["VertexSizeRotLocation"_opt] = locationIndex;
break; break;
case VertexComponent::Tangent: case VertexComponent::Tangent:
config.optionValues[CRC32("VertexTangentLoc")] = locationIndex; config.optionValues["VertexTangentLoc"_opt] = locationIndex;
break; break;
case VertexComponent::TexCoord: case VertexComponent::TexCoord:
config.optionValues[CRC32("VertexUvLoc")] = locationIndex; config.optionValues["VertexUvLoc"_opt] = locationIndex;
break; break;
case VertexComponent::JointIndices: case VertexComponent::JointIndices:
config.optionValues[CRC32("VertexJointIndicesLoc")] = locationIndex; config.optionValues["VertexJointIndicesLoc"_opt] = locationIndex;
break; break;
case VertexComponent::JointWeights: case VertexComponent::JointWeights:
config.optionValues[CRC32("VertexJointWeightsLoc")] = locationIndex; config.optionValues["VertexJointWeightsLoc"_opt] = locationIndex;
break; break;
case VertexComponent::Unused: case VertexComponent::Unused:

View File

@ -157,7 +157,7 @@ namespace Nz
throw std::runtime_error("option " + node.optName + " condition must be resolved"); throw std::runtime_error("option " + node.optName + " condition must be resolved");
OptionData& optionData = m_options[node.optName]; OptionData& optionData = m_options[node.optName];
optionData.hash = CRC32(node.optName); optionData.hash = nzsl::Ast::HashOption(node.optName);
optionData.type = node.optType.GetResultingValue(); optionData.type = node.optType.GetResultingValue();
} }

View File

@ -137,7 +137,7 @@ namespace Nz
//TODO: Check optionType //TODO: Check optionType
optionByName[option.optName] = Option{ optionByName[option.optName] = Option{
CRC32(option.optName) nzsl::Ast::HashOption(option.optName)
}; };
}; };

View File

@ -113,7 +113,7 @@ int main()
} }
nzsl::ShaderWriter::States states; nzsl::ShaderWriter::States states;
states.optionValues[Nz::CRC32("red")] = false; //< Try enabling this! states.optionValues[nzsl::Ast::HashOption("red")] = false; //< Try enabling this!
states.optimize = true; states.optimize = true;
auto fragVertShader = device->InstantiateShaderModule(nzsl::ShaderStageType::Fragment | nzsl::ShaderStageType::Vertex, *shaderModule, states); auto fragVertShader = device->InstantiateShaderModule(nzsl::ShaderStageType::Fragment | nzsl::ShaderStageType::Vertex, *shaderModule, states);

View File

@ -305,7 +305,7 @@ if has_config("platform") then
end end
if has_config("renderer") then if has_config("renderer") then
add_requires("nzsl", { debug = is_mode("debug"), configs = { with_symbols = not is_mode("release"), shared = not is_plat("wasm", "android") and not has_config("static") } }) add_requires("nzsl >=2023.12.17+1", { debug = is_mode("debug"), configs = { with_symbols = not is_mode("release"), shared = not is_plat("wasm", "android") and not has_config("static") } })
local function is_cross_compiling() local function is_cross_compiling()
if os.host() == "windows" then if os.host() == "windows" then