Graphics: Make use of new auto_binding

This commit is contained in:
SirLynix 2022-10-31 22:44:19 +01:00
parent 6b8be23fa0
commit ab154819a7
5 changed files with 42 additions and 35 deletions

View File

@ -33,7 +33,8 @@ namespace Nz
const std::shared_ptr<RenderDevice>& 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<UInt32>(PredefinedLightData::MaxLightCount);
options.optionValues[CRC32("MaxJointCount")] = SafeCast<UInt32>(PredefinedSkeletalData::MaxMatricesCount);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);