[ATOM-15472] Shader Build Pipeline: Remove Deprecated Files And Funct… (#1079)
* [ATOM-15472] Shader Build Pipeline: Remove Deprecated Files And Functions That Predate The Shader Supervariants These are the essential impactful changes as a result of deprecating the ShaderResourceGroupAsset. * Addressed feedback by @moudgils. Better comments in header files. * More updates related with deprecation of ShaderResourceGroupAsset * Deleted the temporary version 2 classes. * Updated version of the shader asset builders. * Updated version of all the shader related classes impacted by the Supervariant concept and deprecation of ShaderResourceGroupAsset * Changes to *.pass and DGI, Reflections and RayTracing. * changes to material related assets * changes to core lights * Changes to auxgeom/dynamic draw. * changes to decals, lyshine, imguipass * changes to RPI Pass classes * Shader for SceneSrg, ViewSrg and ForwardPass Srgs. * changes to mesh, skinned mesh, Morphtarget. * Fixes to RayTracingPass.cpp & now allow empty srg in shaders. * Updated Atom_RPI.Tests * Simplified InstanceDatabase by removing AddHandler ------------------------------------------------------------------------------------ * Updated DiffuseGI precompiled shaders. Added RayTracingSceneSrg and RayTracingMaterialSrg shader asset. Updated ShaderAssetCreator::Clone to handle the supervariant when processing root variants. Co-authored-by: Doug McDiarmid <dmcdiar@amazon.com> ------------------------------------------------------------------------------------ * Changed semantics for some PassSrg to SRG_PerPass_WithFallback. AuxGeom/FixedShapeProcessor.cpp requires SRG_PerDraw on ObjectSrg. Removed names of SceneSrg and ViewSrg from RPISystemDescriptor.cpp * Moved ShaderLib/Atom/Features/DummyEntryFunctions.azsli To Gems/Atom/RPI/Assets/ShaderLib/Atom/RPI/DummyEntryFunctions.azsli Removed redundant checking for finalization in ShaderResourceGroupLayout.cpp * Fixed race condition bug for Shader::FindOrCreate. InstanceDatabase<>::CreateInstance() needs to be atomic for instance creation and initialization. Added optional InstanceHandler::CreateFunctionWithParams to accomodate to the needs of Instances that need more than an asset reference to be able to be created an initialzed. Removed ShaderResourceGroup::FindOrCreate() only ::Create is available now. * Renamed scene_and_view_srgs.* as SceneAndViewSrgs.* Changed GetAzslFileOfOrigin for GetUniqueId * Fixed unit tests. * Reverted the serialization name of m_uniqueId back to "m_azslFileOfOrigin" so precompiled shaders don't fail in layout comparison. * Fixed AtomCore.Tests Removed non-applicable test. InstanceDatabase.AddHandler() is not available anymore. * The Null rhi is re-enabled for shader compilation. Signed-off-by: garrieta <garrieta@amazon.com>
This commit is contained in:
+21
-11
@@ -59,29 +59,36 @@ namespace AZ
|
||||
// load shaders for stencil, blend weight, and render passes
|
||||
LoadShader("shaders/reflections/reflectionprobestencil.azshader",
|
||||
m_reflectionRenderData.m_stencilPipelineState,
|
||||
m_reflectionRenderData.m_stencilSrgAsset,
|
||||
m_reflectionRenderData.m_stencilShader,
|
||||
m_reflectionRenderData.m_stencilSrgLayout,
|
||||
m_reflectionRenderData.m_stencilDrawListTag);
|
||||
|
||||
LoadShader("shaders/reflections/reflectionprobeblendweight.azshader",
|
||||
m_reflectionRenderData.m_blendWeightPipelineState,
|
||||
m_reflectionRenderData.m_blendWeightSrgAsset,
|
||||
m_reflectionRenderData.m_blendWeightShader,
|
||||
m_reflectionRenderData.m_blendWeightSrgLayout,
|
||||
m_reflectionRenderData.m_blendWeightDrawListTag);
|
||||
|
||||
LoadShader("shaders/reflections/reflectionproberenderouter.azshader",
|
||||
m_reflectionRenderData.m_renderOuterPipelineState,
|
||||
m_reflectionRenderData.m_renderOuterSrgAsset,
|
||||
m_reflectionRenderData.m_renderOuterShader,
|
||||
m_reflectionRenderData.m_renderOuterSrgLayout,
|
||||
m_reflectionRenderData.m_renderOuterDrawListTag);
|
||||
|
||||
LoadShader("shaders/reflections/reflectionproberenderinner.azshader",
|
||||
m_reflectionRenderData.m_renderInnerPipelineState,
|
||||
m_reflectionRenderData.m_renderInnerSrgAsset,
|
||||
m_reflectionRenderData.m_renderInnerShader,
|
||||
m_reflectionRenderData.m_renderInnerSrgLayout,
|
||||
m_reflectionRenderData.m_renderInnerDrawListTag);
|
||||
|
||||
// create ShaderResourceGroups here so we can get the layout and cache the indices
|
||||
// Note: the SRGs are not needed beyond this method since each probe creates its own SRGs, we are just interested in the indices
|
||||
|
||||
// cache probe stencil shader indices
|
||||
Data::Instance<RPI::ShaderResourceGroup> stencilSrg = RPI::ShaderResourceGroup::Create(m_reflectionRenderData.m_stencilSrgAsset);
|
||||
Data::Instance<RPI::ShaderResourceGroup> stencilSrg = RPI::ShaderResourceGroup::Create(
|
||||
m_reflectionRenderData.m_stencilShader->GetAsset(),
|
||||
m_reflectionRenderData.m_stencilShader->GetSupervariantIndex(),
|
||||
m_reflectionRenderData.m_stencilSrgLayout->GetName());
|
||||
AZ_Error("ReflectionProbeFeatureProcessor", stencilSrg.get(), "Failed to create stencil back face shader resource group");
|
||||
|
||||
const RHI::ShaderResourceGroupLayout* stencilSrgLayout = stencilSrg->GetLayout();
|
||||
@@ -91,7 +98,10 @@ namespace AZ
|
||||
|
||||
// cache probe render shader indices
|
||||
// Note: the outer and inner render shaders use the same Srg
|
||||
Data::Instance<RPI::ShaderResourceGroup> renderReflectionSrg = RPI::ShaderResourceGroup::Create(m_reflectionRenderData.m_renderOuterSrgAsset);
|
||||
Data::Instance<RPI::ShaderResourceGroup> renderReflectionSrg = RPI::ShaderResourceGroup::Create(
|
||||
m_reflectionRenderData.m_renderOuterShader->GetAsset(),
|
||||
m_reflectionRenderData.m_renderOuterShader->GetSupervariantIndex(),
|
||||
m_reflectionRenderData.m_renderOuterSrgLayout->GetName());
|
||||
AZ_Error("ReflectionProbeFeatureProcessor", renderReflectionSrg.get(), "Failed to create render reflection shader resource group");
|
||||
|
||||
const RHI::ShaderResourceGroupLayout* renderReflectionSrgLayout = renderReflectionSrg->GetLayout();
|
||||
@@ -472,11 +482,12 @@ namespace AZ
|
||||
void ReflectionProbeFeatureProcessor::LoadShader(
|
||||
const char* filePath,
|
||||
RPI::Ptr<RPI::PipelineStateForDraw>& pipelineState,
|
||||
Data::Asset<RPI::ShaderResourceGroupAsset>& srgAsset,
|
||||
Data::Instance<RPI::Shader>& shader,
|
||||
RHI::Ptr<RHI::ShaderResourceGroupLayout>& srgLayout,
|
||||
RHI::DrawListTag& drawListTag)
|
||||
{
|
||||
// load shader
|
||||
Data::Instance<RPI::Shader> shader = RPI::LoadShader(filePath);
|
||||
shader = RPI::LoadShader(filePath);
|
||||
AZ_Error("ReflectionProbeFeatureProcessor", shader, "Failed to find asset for shader [%s]", filePath);
|
||||
|
||||
// store drawlist tag
|
||||
@@ -490,9 +501,8 @@ namespace AZ
|
||||
pipelineState->Finalize();
|
||||
|
||||
// load object shader resource group
|
||||
srgAsset = shader->FindShaderResourceGroupAsset(Name{ "ObjectSrg" });
|
||||
AZ_Error("ReflectionProbeFeatureProcessor", srgAsset.GetId().IsValid(), "Failed to find ObjectSrg asset for shader [%s]", filePath);
|
||||
AZ_Error("ReflectionProbeFeatureProcessor", srgAsset.IsReady(), "ObjectSrg asset is not loaded for shader [%s]", filePath);
|
||||
srgLayout = shader->FindShaderResourceGroupLayout(RPI::SrgBindingSlot::Object);
|
||||
AZ_Error("ReflectionProbeFeatureProcessor", srgLayout != nullptr, "Failed to find ObjectSrg layout from shader [%s]", filePath);
|
||||
}
|
||||
|
||||
void ReflectionProbeFeatureProcessor::OnRenderPipelinePassesChanged(RPI::RenderPipeline* renderPipeline)
|
||||
|
||||
Reference in New Issue
Block a user