[ATOM-15276] Shader Build Pipeline: Add Shader Supervariant System (#749)
* [ATOM-15276] Shader Build Pipeline: Add Shader Supervariant System. Added ShaderAssetBuilder2 & ShaderVariantAssetBuilder2. Added ShaderAsset2, ShaderVariantAsset2. Eventually they will be the only builders. AzslBuilder & SrgLayoutBuilder will be removed. ShaderResourceGroupAsset will be removed. ShaderAssetBuilder & ShaderVariantAssetBuilder will be replaced. Signed-off-by: garrieta <garrieta@amazon.com>
This commit is contained in:
@@ -86,7 +86,7 @@ namespace AZ
|
||||
// Register AZSL's compilation products Builder
|
||||
AssetBuilderSDK::AssetBuilderDesc azslBuilderDescriptor;
|
||||
azslBuilderDescriptor.m_name = "AZSL Builder";
|
||||
azslBuilderDescriptor.m_version = 7; // LKG Merge
|
||||
azslBuilderDescriptor.m_version = 8; // ATOM-15276
|
||||
// register all extensions thay may carry azsl code. header. main shader. or SRG
|
||||
azslBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", RPI::ShaderSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
|
||||
azslBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern("*.azsl", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
|
||||
@@ -102,7 +102,7 @@ namespace AZ
|
||||
// Register Shader Resource Group Layout Builder
|
||||
AssetBuilderSDK::AssetBuilderDesc srgLayoutBuilderDescriptor;
|
||||
srgLayoutBuilderDescriptor.m_name = "Shader Resource Group Layout Builder";
|
||||
srgLayoutBuilderDescriptor.m_version = 54; // Enable Null Rhi for AutomatedTesting
|
||||
srgLayoutBuilderDescriptor.m_version = 55; // ATOM-15276
|
||||
|
||||
srgLayoutBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern("*.azsl", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
|
||||
srgLayoutBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern("*.azsli", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
|
||||
@@ -118,7 +118,7 @@ namespace AZ
|
||||
// Register Shader Asset Builder
|
||||
AssetBuilderSDK::AssetBuilderDesc shaderAssetBuilderDescriptor;
|
||||
shaderAssetBuilderDescriptor.m_name = "Shader Asset Builder";
|
||||
shaderAssetBuilderDescriptor.m_version = 98; // Enable Null Rhi for AutomatedTesting
|
||||
shaderAssetBuilderDescriptor.m_version = 99; // ATOM-15276
|
||||
// .shader file changes trigger rebuilds
|
||||
shaderAssetBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern( AZStd::string::format("*.%s", RPI::ShaderSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
|
||||
shaderAssetBuilderDescriptor.m_busId = azrtti_typeid<ShaderAssetBuilder>();
|
||||
@@ -133,7 +133,7 @@ namespace AZ
|
||||
shaderVariantAssetBuilderDescriptor.m_name = "Shader Variant Asset Builder";
|
||||
// Both "Shader Variant Asset Builder" and "Shader Asset Builder" produce ShaderVariantAsset products. If you update
|
||||
// ShaderVariantAsset you will need to update BOTH version numbers, not just "Shader Variant Asset Builder".
|
||||
shaderVariantAssetBuilderDescriptor.m_version = 19; // Enable Null Rhi for AutomatedTesting
|
||||
shaderVariantAssetBuilderDescriptor.m_version = 20; // ATOM-15276
|
||||
shaderVariantAssetBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", RPI::ShaderVariantListSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
|
||||
shaderVariantAssetBuilderDescriptor.m_busId = azrtti_typeid<ShaderVariantAssetBuilder>();
|
||||
shaderVariantAssetBuilderDescriptor.m_createJobFunction = AZStd::bind(&ShaderVariantAssetBuilder::CreateJobs, &m_shaderVariantAssetBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2);
|
||||
@@ -145,7 +145,7 @@ namespace AZ
|
||||
// Register Precompiled Shader Builder
|
||||
AssetBuilderSDK::AssetBuilderDesc precompiledShaderBuilderDescriptor;
|
||||
precompiledShaderBuilderDescriptor.m_name = "Precompiled Shader Builder";
|
||||
precompiledShaderBuilderDescriptor.m_version = 7; // ATOM-14780
|
||||
precompiledShaderBuilderDescriptor.m_version = 8; // ATOM-15276
|
||||
precompiledShaderBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", AZ::PrecompiledShaderBuilder::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
|
||||
precompiledShaderBuilderDescriptor.m_busId = azrtti_typeid<PrecompiledShaderBuilder>();
|
||||
precompiledShaderBuilderDescriptor.m_createJobFunction = AZStd::bind(&PrecompiledShaderBuilder::CreateJobs, &m_precompiledShaderBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2);
|
||||
@@ -153,6 +153,43 @@ namespace AZ
|
||||
|
||||
m_precompiledShaderBuilder.BusConnect(precompiledShaderBuilderDescriptor.m_busId);
|
||||
AssetBuilderSDK::AssetBuilderBus::Broadcast(&AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, precompiledShaderBuilderDescriptor);
|
||||
|
||||
// Register Shader Asset Builder 2
|
||||
AssetBuilderSDK::AssetBuilderDesc shaderAssetBuilder2Descriptor;
|
||||
shaderAssetBuilder2Descriptor.m_name = "Shader Asset Builder 2";
|
||||
shaderAssetBuilder2Descriptor.m_version = 1; // ATOM-15276
|
||||
// .shader2 file changes trigger rebuilds
|
||||
shaderAssetBuilder2Descriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(
|
||||
AZStd::string::format("*.%s", RPI::ShaderSourceData::Extension2),
|
||||
AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
|
||||
shaderAssetBuilder2Descriptor.m_busId = azrtti_typeid<ShaderAssetBuilder2>();
|
||||
shaderAssetBuilder2Descriptor.m_createJobFunction =
|
||||
AZStd::bind(&ShaderAssetBuilder2::CreateJobs, &m_shaderAssetBuilder2, AZStd::placeholders::_1, AZStd::placeholders::_2);
|
||||
shaderAssetBuilder2Descriptor.m_processJobFunction =
|
||||
AZStd::bind(&ShaderAssetBuilder2::ProcessJob, &m_shaderAssetBuilder2, AZStd::placeholders::_1, AZStd::placeholders::_2);
|
||||
|
||||
m_shaderAssetBuilder2.BusConnect(shaderAssetBuilder2Descriptor.m_busId);
|
||||
AssetBuilderSDK::AssetBuilderBus::Broadcast(
|
||||
&AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, shaderAssetBuilder2Descriptor);
|
||||
|
||||
// Register Shader Variant Asset Builder 2
|
||||
AssetBuilderSDK::AssetBuilderDesc shaderVariantAssetBuilder2Descriptor;
|
||||
shaderVariantAssetBuilder2Descriptor.m_name = "Shader Variant Asset Builder 2";
|
||||
// Both "Shader Variant Asset Builder" and "Shader Asset Builder" produce ShaderVariantAsset products. If you update
|
||||
// ShaderVariantAsset you will need to update BOTH version numbers, not just "Shader Variant Asset Builder".
|
||||
shaderVariantAssetBuilder2Descriptor.m_version = 1; // ATOM-15276
|
||||
shaderVariantAssetBuilder2Descriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(
|
||||
AZStd::string::format("*.%s", RPI::ShaderVariantListSourceData::Extension2),
|
||||
AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
|
||||
shaderVariantAssetBuilder2Descriptor.m_busId = azrtti_typeid<ShaderVariantAssetBuilder2>();
|
||||
shaderVariantAssetBuilder2Descriptor.m_createJobFunction = AZStd::bind(
|
||||
&ShaderVariantAssetBuilder2::CreateJobs, &m_shaderVariantAssetBuilder2, AZStd::placeholders::_1, AZStd::placeholders::_2);
|
||||
shaderVariantAssetBuilder2Descriptor.m_processJobFunction = AZStd::bind(
|
||||
&ShaderVariantAssetBuilder2::ProcessJob, &m_shaderVariantAssetBuilder2, AZStd::placeholders::_1, AZStd::placeholders::_2);
|
||||
|
||||
m_shaderVariantAssetBuilder2.BusConnect(shaderVariantAssetBuilder2Descriptor.m_busId);
|
||||
AssetBuilderSDK::AssetBuilderBus::Broadcast(
|
||||
&AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, shaderVariantAssetBuilder2Descriptor);
|
||||
}
|
||||
|
||||
void AzslShaderBuilderSystemComponent::Deactivate()
|
||||
@@ -161,6 +198,8 @@ namespace AZ
|
||||
m_srgLayoutBuilder.BusDisconnect();
|
||||
m_shaderVariantAssetBuilder.BusDisconnect();
|
||||
m_precompiledShaderBuilder.BusDisconnect();
|
||||
m_shaderAssetBuilder2.BusDisconnect();
|
||||
m_shaderVariantAssetBuilder2.BusDisconnect();
|
||||
|
||||
RHI::ShaderPlatformInterfaceRegisterBus::Handler::BusDisconnect();
|
||||
ShaderPlatformInterfaceRequestBus::Handler::BusDisconnect();
|
||||
|
||||
Reference in New Issue
Block a user