diff --git a/src/Nazara/Graphics/Material.cpp b/src/Nazara/Graphics/Material.cpp index 1b02cb796..bb836761f 100644 --- a/src/Nazara/Graphics/Material.cpp +++ b/src/Nazara/Graphics/Material.cpp @@ -33,7 +33,8 @@ namespace Nz const std::shared_ptr& renderDevice = graphics->GetRenderDevice(); nzsl::Ast::SanitizeVisitor::Options options; - options.allowPartialSanitization = true; + options.forceAutoBindingResolve = true; + options.partialSanitization = true; options.moduleResolver = graphics->GetShaderModuleResolver(); options.optionValues[CRC32("MaxLightCount")] = SafeCast(PredefinedLightData::MaxLightCount); options.optionValues[CRC32("MaxJointCount")] = SafeCast(PredefinedSkeletalData::MaxMatricesCount); diff --git a/src/Nazara/Graphics/Resources/Shaders/BasicMaterial.nzsl b/src/Nazara/Graphics/Resources/Shaders/BasicMaterial.nzsl index 8e341e548..05ac30374 100644 --- a/src/Nazara/Graphics/Resources/Shaders/BasicMaterial.nzsl +++ b/src/Nazara/Graphics/Resources/Shaders/BasicMaterial.nzsl @@ -43,20 +43,22 @@ struct MaterialSettings } [tag("Material")] +[auto_binding] external { - [tag("Settings"), binding(0)] settings: uniform[MaterialSettings], - [tag("BaseColorMap"), binding(1)] MaterialBaseColorMap: sampler2D[f32], - [tag("AlphaMap"), binding(2)] MaterialAlphaMap: sampler2D[f32], + [tag("Settings")] settings: uniform[MaterialSettings], + [tag("BaseColorMap")] MaterialBaseColorMap: sampler2D[f32], + [tag("AlphaMap")] MaterialAlphaMap: sampler2D[f32], } [tag("Engine")] +[auto_binding] external { - [tag("TextureOverlay"), binding(3)] TextureOverlay: sampler2D[f32], - [tag("InstanceData"), binding(4)] instanceData: uniform[InstanceData], - [tag("ViewerData"), binding(5)] viewerData: uniform[ViewerData], - [tag("SkeletalData"), binding(6)] skeletalData: uniform[SkeletalData] + [tag("TextureOverlay")] TextureOverlay: sampler2D[f32], + [tag("InstanceData")] instanceData: uniform[InstanceData], + [tag("ViewerData")] viewerData: uniform[ViewerData], + [tag("SkeletalData")] skeletalData: uniform[SkeletalData] } // Fragment stage diff --git a/src/Nazara/Graphics/Resources/Shaders/PhongMaterial.nzsl b/src/Nazara/Graphics/Resources/Shaders/PhongMaterial.nzsl index 1065b50e7..1697e0831 100644 --- a/src/Nazara/Graphics/Resources/Shaders/PhongMaterial.nzsl +++ b/src/Nazara/Graphics/Resources/Shaders/PhongMaterial.nzsl @@ -68,25 +68,27 @@ const PointLight = 1; const SpotLight = 2; [tag("Material")] +[auto_binding] external { - [tag("Settings"), binding(0)] settings: uniform[MaterialSettings], - [tag("BaseColorMap"), binding(1)] MaterialBaseColorMap: sampler2D[f32], - [tag("AlphaMap"), binding(2)] MaterialAlphaMap: sampler2D[f32], - [tag("EmissiveMap"), binding(3)] MaterialEmissiveMap: sampler2D[f32], - [tag("HeightMap"), binding(4)] MaterialHeightMap: sampler2D[f32], - [tag("NormalMap"), binding(5)] MaterialNormalMap: sampler2D[f32], - [tag("SpecularMap"), binding(6)] MaterialSpecularMap: sampler2D[f32], + [tag("Settings")] settings: uniform[MaterialSettings], + [tag("BaseColorMap")] MaterialBaseColorMap: sampler2D[f32], + [tag("AlphaMap")] MaterialAlphaMap: sampler2D[f32], + [tag("EmissiveMap")] MaterialEmissiveMap: sampler2D[f32], + [tag("HeightMap")] MaterialHeightMap: sampler2D[f32], + [tag("NormalMap")] MaterialNormalMap: sampler2D[f32], + [tag("SpecularMap")] MaterialSpecularMap: sampler2D[f32], } [tag("Engine")] +[auto_binding] external { - [tag("TextureOverlay"), binding(7)] TextureOverlay: sampler2D[f32], - [tag("InstanceData"), binding(8)] instanceData: uniform[InstanceData], - [tag("ViewerData"), binding(9)] viewerData: uniform[ViewerData], - [tag("SkeletalData"), binding(10)] skeletalData: uniform[SkeletalData], - [tag("LightData"), binding(11)] lightData: uniform[LightData] + [tag("TextureOverlay")] TextureOverlay: sampler2D[f32], + [tag("InstanceData")] instanceData: uniform[InstanceData], + [tag("ViewerData")] viewerData: uniform[ViewerData], + [tag("SkeletalData")] skeletalData: uniform[SkeletalData], + [tag("LightData")] lightData: uniform[LightData] } struct VertToFrag diff --git a/src/Nazara/Graphics/Resources/Shaders/PhysicallyBasedMaterial.nzsl b/src/Nazara/Graphics/Resources/Shaders/PhysicallyBasedMaterial.nzsl index bb9a59f3b..7f93a710a 100644 --- a/src/Nazara/Graphics/Resources/Shaders/PhysicallyBasedMaterial.nzsl +++ b/src/Nazara/Graphics/Resources/Shaders/PhysicallyBasedMaterial.nzsl @@ -59,27 +59,29 @@ const PointLight = 1; const SpotLight = 2; [tag("Material")] +[auto_binding] external { - [tag("Settings"), binding(0)] settings: uniform[MaterialSettings], - [tag("BaseColorMap"), binding(1)] MaterialBaseColorMap: sampler2D[f32], - [tag("AlphaMap"), binding(2)] MaterialAlphaMap: sampler2D[f32], - [tag("EmissiveMap"), binding(3)] MaterialEmissiveMap: sampler2D[f32], - [tag("HeightMap"), binding(4)] MaterialHeightMap: sampler2D[f32], - [tag("MetallicMap"), binding(5)] MaterialMetallicMap: sampler2D[f32], - [tag("NormalMap"), binding(6)] MaterialNormalMap: sampler2D[f32], - [tag("RoughnessMap"), binding(7)] MaterialRoughnessMap: sampler2D[f32], - [tag("SpecularMap"), binding(8)] MaterialSpecularMap: sampler2D[f32], + [tag("Settings")] settings: uniform[MaterialSettings], + [tag("BaseColorMap")] MaterialBaseColorMap: sampler2D[f32], + [tag("AlphaMap")] MaterialAlphaMap: sampler2D[f32], + [tag("EmissiveMap")] MaterialEmissiveMap: sampler2D[f32], + [tag("HeightMap")] MaterialHeightMap: sampler2D[f32], + [tag("MetallicMap")] MaterialMetallicMap: sampler2D[f32], + [tag("NormalMap")] MaterialNormalMap: sampler2D[f32], + [tag("RoughnessMap")] MaterialRoughnessMap: sampler2D[f32], + [tag("SpecularMap")] MaterialSpecularMap: sampler2D[f32], } [tag("Engine")] +[auto_binding] external { - [tag("TextureOverlay"), binding(9)] TextureOverlay: sampler2D[f32], - [tag("InstanceData"), binding(10)] instanceData: uniform[InstanceData], - [tag("ViewerData"), binding(11)] viewerData: uniform[ViewerData], - [tag("SkeletalData"), binding(12)] skeletalData: uniform[SkeletalData], - [tag("LightData"), binding(13)] lightData: uniform[LightData] + [tag("TextureOverlay")] TextureOverlay: sampler2D[f32], + [tag("InstanceData")] instanceData: uniform[InstanceData], + [tag("ViewerData")] viewerData: uniform[ViewerData], + [tag("SkeletalData")] skeletalData: uniform[SkeletalData], + [tag("LightData")] lightData: uniform[LightData] } struct VertToFrag diff --git a/src/Nazara/Graphics/UberShader.cpp b/src/Nazara/Graphics/UberShader.cpp index 2d92fd3e4..3e2661574 100644 --- a/src/Nazara/Graphics/UberShader.cpp +++ b/src/Nazara/Graphics/UberShader.cpp @@ -99,7 +99,7 @@ namespace Nz // Try to partially sanitize shader nzsl::Ast::SanitizeVisitor::Options sanitizeOptions; - sanitizeOptions.allowPartialSanitization = true; + sanitizeOptions.partialSanitization = true; sanitizeOptions.moduleResolver = Graphics::Instance()->GetShaderModuleResolver(); nzsl::Ast::ModulePtr sanitizedModule = nzsl::Ast::Sanitize(module, sanitizeOptions);