[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:
@@ -12,9 +12,9 @@
|
||||
|
||||
#include <AzTest/AzTest.h>
|
||||
#include <Common/RPITestFixture.h>
|
||||
#include <Common/ShaderAssetTestUtils.h>
|
||||
|
||||
#include <Atom/RPI.Public/Shader/ShaderResourceGroup.h>
|
||||
#include <Atom/RPI.Reflect/Shader/ShaderResourceGroupAssetCreator.h>
|
||||
#include <Atom/RPI.Public/Buffer/Buffer.h>
|
||||
#include <Atom/RPI.Reflect/Buffer/BufferAssetCreator.h>
|
||||
#include <Atom/RPI.Reflect/ResourcePoolAssetCreator.h>
|
||||
@@ -28,7 +28,8 @@ namespace UnitTest
|
||||
: public RPITestFixture
|
||||
{
|
||||
protected:
|
||||
Data::Asset<ShaderResourceGroupAsset> m_testSrgAsset;
|
||||
Data::Asset<ShaderAsset> m_testSrgShaderAsset;
|
||||
RHI::Ptr<RHI::ShaderResourceGroupLayout> m_testSrgLayout;
|
||||
Data::Instance<ShaderResourceGroup> m_testSrg;
|
||||
Data::Asset<ResourcePoolAsset> m_bufferPoolAsset;
|
||||
Data::Asset<BufferAsset> m_shortBufferAsset;
|
||||
@@ -47,21 +48,18 @@ namespace UnitTest
|
||||
const RHI::ShaderInputBufferIndex m_indexOfBufferArray{ 2 };
|
||||
const RHI::ShaderInputBufferIndex m_indexOfBufferInvalid{ 3 };
|
||||
|
||||
Data::Asset<ShaderResourceGroupAsset> CreateTestSrgAsset(const char* nameId)
|
||||
RHI::Ptr<RHI::ShaderResourceGroupLayout> CreateTestSrgLayout(const char* nameId)
|
||||
{
|
||||
Data::Asset<ShaderResourceGroupAsset> asset;
|
||||
ShaderResourceGroupAssetCreator srgCreator;
|
||||
RHI::Ptr<RHI::ShaderResourceGroupLayout> srgLayout = RHI::ShaderResourceGroupLayout::Create();
|
||||
|
||||
srgCreator.Begin(Uuid::CreateRandom(), Name(nameId));
|
||||
srgCreator.BeginAPI(RHI::Factory::Get().GetType());
|
||||
srgCreator.SetBindingSlot(0);
|
||||
srgCreator.AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferA" }, RHI::ShaderInputBufferAccess::Read, RHI::ShaderInputBufferType::Raw, 1, 4, 1 });
|
||||
srgCreator.AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferB" }, RHI::ShaderInputBufferAccess::Read, RHI::ShaderInputBufferType::Raw, 1, 4, 2 });
|
||||
srgCreator.AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferArray" }, RHI::ShaderInputBufferAccess::Read, RHI::ShaderInputBufferType::Raw, 3, 4, 3 });
|
||||
srgCreator.EndAPI();
|
||||
srgCreator.End(asset);
|
||||
srgLayout->SetName(Name(nameId));
|
||||
srgLayout->SetBindingSlot(0);
|
||||
srgLayout->AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferA" }, RHI::ShaderInputBufferAccess::Read, RHI::ShaderInputBufferType::Raw, 1, 4, 1 });
|
||||
srgLayout->AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferB" }, RHI::ShaderInputBufferAccess::Read, RHI::ShaderInputBufferType::Raw, 1, 4, 2 });
|
||||
srgLayout->AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferArray" }, RHI::ShaderInputBufferAccess::Read, RHI::ShaderInputBufferType::Raw, 3, 4, 3 });
|
||||
srgLayout->Finalize();
|
||||
|
||||
return asset;
|
||||
return srgLayout;
|
||||
}
|
||||
|
||||
Data::Asset<ResourcePoolAsset> CreateTestBufferPoolAsset()
|
||||
@@ -101,8 +99,9 @@ namespace UnitTest
|
||||
{
|
||||
RPITestFixture::SetUp();
|
||||
|
||||
m_testSrgAsset = CreateTestSrgAsset("TestSrg");
|
||||
m_testSrg = ShaderResourceGroup::Create(m_testSrgAsset);
|
||||
m_testSrgLayout = CreateTestSrgLayout("TestSrg");
|
||||
m_testSrgShaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testSrgLayout);
|
||||
m_testSrg = ShaderResourceGroup::Create(m_testSrgShaderAsset, AZ::RPI::DefaultSupervariantIndex, m_testSrgLayout->GetName());
|
||||
|
||||
m_bufferPoolAsset = CreateTestBufferPoolAsset();
|
||||
m_shortBufferAsset = CreateTestBufferAsset("Short");
|
||||
@@ -123,8 +122,9 @@ namespace UnitTest
|
||||
|
||||
void TearDown() override
|
||||
{
|
||||
m_testSrgLayout = nullptr;
|
||||
m_testSrg = nullptr;
|
||||
m_testSrgAsset.Reset();
|
||||
m_testSrgShaderAsset.Reset();
|
||||
m_shortBufferAsset.Reset();
|
||||
m_mediumBufferAsset.Reset();
|
||||
m_longBufferAsset.Reset();
|
||||
@@ -198,7 +198,7 @@ namespace UnitTest
|
||||
|
||||
// Test changing back to null...
|
||||
|
||||
ProcessQueuedSrgCompilations(m_testSrgAsset);
|
||||
ProcessQueuedSrgCompilations(m_testSrgShaderAsset, m_testSrgLayout->GetName());
|
||||
|
||||
EXPECT_TRUE(m_testSrg->SetBuffer(m_indexOfBufferA, nullptr));
|
||||
m_testSrg->Compile();
|
||||
@@ -224,7 +224,7 @@ namespace UnitTest
|
||||
|
||||
// Test changing back to null...
|
||||
|
||||
ProcessQueuedSrgCompilations(m_testSrgAsset);
|
||||
ProcessQueuedSrgCompilations(m_testSrgShaderAsset, m_testSrgLayout->GetName());
|
||||
|
||||
EXPECT_TRUE(m_testSrg->SetBuffer(m_indexOfBufferArray, nullptr, 1));
|
||||
m_testSrg->Compile();
|
||||
@@ -252,7 +252,7 @@ namespace UnitTest
|
||||
|
||||
// Test replacing just two buffers including changing one buffer back to null...
|
||||
|
||||
ProcessQueuedSrgCompilations(m_testSrgAsset);
|
||||
ProcessQueuedSrgCompilations(m_testSrgShaderAsset, m_testSrgLayout->GetName());
|
||||
|
||||
AZStd::vector<Data::Instance<Buffer>> alternateBuffers = { m_mediumBuffer, nullptr };
|
||||
|
||||
@@ -398,7 +398,7 @@ namespace UnitTest
|
||||
|
||||
// Test replacing just two buffer views including changing one back to null...
|
||||
|
||||
ProcessQueuedSrgCompilations(m_testSrgAsset);
|
||||
ProcessQueuedSrgCompilations(m_testSrgShaderAsset, m_testSrgLayout->GetName());
|
||||
|
||||
AZStd::vector<const RHI::BufferView*> alternateBufferViews = { m_bufferViewB.get(), nullptr };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user