[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:
@@ -14,6 +14,7 @@
|
||||
#include <Common/RPITestFixture.h>
|
||||
#include <Common/JsonTestUtils.h>
|
||||
#include <Common/ErrorMessageFinder.h>
|
||||
#include <Common/ShaderAssetTestUtils.h>
|
||||
#include <AzCore/Script/ScriptAsset.h>
|
||||
#include <Atom/RPI.Edit/Material/LuaMaterialFunctorSourceData.h>
|
||||
#include <Atom/RPI.Reflect/Material/LuaMaterialFunctor.h>
|
||||
@@ -125,7 +126,7 @@ namespace UnitTest
|
||||
|
||||
// Setup for a single material property and a specific shader constant input
|
||||
void Setup(
|
||||
Data::Asset<ShaderResourceGroupAsset> materialSrgAsset,
|
||||
RHI::Ptr<RHI::ShaderResourceGroupLayout> materialSrgLayout,
|
||||
MaterialPropertyDataType dataType,
|
||||
const char* materialPropertyName,
|
||||
const char* shaderInputName,
|
||||
@@ -133,7 +134,7 @@ namespace UnitTest
|
||||
{
|
||||
MaterialTypeAssetCreator materialTypeCreator;
|
||||
materialTypeCreator.Begin(Uuid::CreateRandom());
|
||||
materialTypeCreator.AddShader(CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgAsset));
|
||||
materialTypeCreator.AddShader(CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout));
|
||||
materialTypeCreator.BeginMaterialProperty(Name{materialPropertyName}, dataType);
|
||||
materialTypeCreator.EndMaterialProperty();
|
||||
LuaMaterialFunctorTests::AddLuaFunctor(materialTypeCreator, luaFunctorScript);
|
||||
@@ -238,18 +239,19 @@ namespace UnitTest
|
||||
end
|
||||
)";
|
||||
|
||||
Data::Asset<ShaderResourceGroupAsset> materialSrgAsset = CreateCommonTestMaterialSrgAsset();
|
||||
auto materialSrgLayout = CreateCommonTestMaterialSrgLayout();
|
||||
auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout);
|
||||
|
||||
TestMaterialData testData;
|
||||
testData.Setup(materialSrgAsset, MaterialPropertyDataType::Bool, "general.TestBool", "m_bool", functorScript);
|
||||
testData.Setup(materialSrgLayout, MaterialPropertyDataType::Bool, "general.TestBool", "m_bool", functorScript);
|
||||
|
||||
testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{true});
|
||||
ProcessQueuedSrgCompilations(materialSrgAsset);
|
||||
ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName());
|
||||
EXPECT_TRUE(testData.GetMaterial()->Compile());
|
||||
EXPECT_EQ(true, testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant<bool>(testData.GetSrgConstantIndex()));
|
||||
|
||||
testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{false});
|
||||
ProcessQueuedSrgCompilations(materialSrgAsset);
|
||||
ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName());
|
||||
EXPECT_TRUE(testData.GetMaterial()->Compile());
|
||||
EXPECT_EQ(false, testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant<bool>(testData.GetSrgConstantIndex()));
|
||||
}
|
||||
@@ -270,13 +272,14 @@ namespace UnitTest
|
||||
end
|
||||
)";
|
||||
|
||||
Data::Asset<ShaderResourceGroupAsset> materialSrgAsset = CreateCommonTestMaterialSrgAsset();
|
||||
auto materialSrgLayout = CreateCommonTestMaterialSrgLayout();
|
||||
auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout);
|
||||
|
||||
TestMaterialData testData;
|
||||
testData.Setup(materialSrgAsset, MaterialPropertyDataType::Float, "general.TestFloat", "m_float", functorScript);
|
||||
testData.Setup(materialSrgLayout, MaterialPropertyDataType::Float, "general.TestFloat", "m_float", functorScript);
|
||||
|
||||
testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{1.25f});
|
||||
ProcessQueuedSrgCompilations(materialSrgAsset);
|
||||
ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName());
|
||||
EXPECT_TRUE(testData.GetMaterial()->Compile());
|
||||
EXPECT_FLOAT_EQ(2.5f, testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant<float>(testData.GetSrgConstantIndex()));
|
||||
}
|
||||
@@ -297,13 +300,14 @@ namespace UnitTest
|
||||
end
|
||||
)";
|
||||
|
||||
Data::Asset<ShaderResourceGroupAsset> materialSrgAsset = CreateCommonTestMaterialSrgAsset();
|
||||
auto materialSrgLayout = CreateCommonTestMaterialSrgLayout();
|
||||
auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout);
|
||||
|
||||
TestMaterialData testData;
|
||||
testData.Setup(materialSrgAsset, MaterialPropertyDataType::Int, "general.TestInt", "m_int", functorScript);
|
||||
testData.Setup(materialSrgLayout, MaterialPropertyDataType::Int, "general.TestInt", "m_int", functorScript);
|
||||
|
||||
testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{2});
|
||||
ProcessQueuedSrgCompilations(materialSrgAsset);
|
||||
ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName());
|
||||
EXPECT_TRUE(testData.GetMaterial()->Compile());
|
||||
EXPECT_EQ(-2, testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant<int32_t>(testData.GetSrgConstantIndex()));
|
||||
}
|
||||
@@ -324,13 +328,14 @@ namespace UnitTest
|
||||
end
|
||||
)";
|
||||
|
||||
Data::Asset<ShaderResourceGroupAsset> materialSrgAsset = CreateCommonTestMaterialSrgAsset();
|
||||
auto materialSrgLayout = CreateCommonTestMaterialSrgLayout();
|
||||
auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout);
|
||||
|
||||
TestMaterialData testData;
|
||||
testData.Setup(materialSrgAsset, MaterialPropertyDataType::UInt, "general.TestUInt", "m_uint", functorScript);
|
||||
testData.Setup(materialSrgLayout, MaterialPropertyDataType::UInt, "general.TestUInt", "m_uint", functorScript);
|
||||
|
||||
testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{2u});
|
||||
ProcessQueuedSrgCompilations(materialSrgAsset);
|
||||
ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName());
|
||||
EXPECT_TRUE(testData.GetMaterial()->Compile());
|
||||
EXPECT_EQ(7, testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant<uint32_t>(testData.GetSrgConstantIndex()));
|
||||
}
|
||||
@@ -354,13 +359,14 @@ namespace UnitTest
|
||||
end
|
||||
)";
|
||||
|
||||
Data::Asset<ShaderResourceGroupAsset> materialSrgAsset = CreateCommonTestMaterialSrgAsset();
|
||||
auto materialSrgLayout = CreateCommonTestMaterialSrgLayout();
|
||||
auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout);
|
||||
|
||||
TestMaterialData testData;
|
||||
testData.Setup(materialSrgAsset, MaterialPropertyDataType::Vector2, "general.TestVector2", "m_float2", functorScript);
|
||||
testData.Setup(materialSrgLayout, MaterialPropertyDataType::Vector2, "general.TestVector2", "m_float2", functorScript);
|
||||
|
||||
testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{Vector2(1.0f, 2.0f)});
|
||||
ProcessQueuedSrgCompilations(materialSrgAsset);
|
||||
ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName());
|
||||
EXPECT_TRUE(testData.GetMaterial()->Compile());
|
||||
EXPECT_EQ(Vector2(2.0f, 1.0f), testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant<Vector2>(testData.GetSrgConstantIndex()));
|
||||
}
|
||||
@@ -382,13 +388,14 @@ namespace UnitTest
|
||||
end
|
||||
)";
|
||||
|
||||
Data::Asset<ShaderResourceGroupAsset> materialSrgAsset = CreateCommonTestMaterialSrgAsset();
|
||||
auto materialSrgLayout = CreateCommonTestMaterialSrgLayout();
|
||||
auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout);
|
||||
|
||||
TestMaterialData testData;
|
||||
testData.Setup(materialSrgAsset, MaterialPropertyDataType::Vector3, "general.TestVector3", "m_float3", functorScript);
|
||||
testData.Setup(materialSrgLayout, MaterialPropertyDataType::Vector3, "general.TestVector3", "m_float3", functorScript);
|
||||
|
||||
testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{Vector3(5.0f, 4.0f, 3.0f)});
|
||||
ProcessQueuedSrgCompilations(materialSrgAsset);
|
||||
ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName());
|
||||
EXPECT_TRUE(testData.GetMaterial()->Compile());
|
||||
EXPECT_EQ(Vector3(5.0f, 4.0f, 3.0f).GetNormalized(), testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant<Vector3>(testData.GetSrgConstantIndex()));
|
||||
}
|
||||
@@ -410,13 +417,14 @@ namespace UnitTest
|
||||
end
|
||||
)";
|
||||
|
||||
Data::Asset<ShaderResourceGroupAsset> materialSrgAsset = CreateCommonTestMaterialSrgAsset();
|
||||
auto materialSrgLayout = CreateCommonTestMaterialSrgLayout();
|
||||
auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout);
|
||||
|
||||
TestMaterialData testData;
|
||||
testData.Setup(materialSrgAsset, MaterialPropertyDataType::Vector4, "general.TestVector4", "m_float4", functorScript);
|
||||
testData.Setup(materialSrgLayout, MaterialPropertyDataType::Vector4, "general.TestVector4", "m_float4", functorScript);
|
||||
|
||||
testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{Vector4(1.0f, 2.0f, 3.0f, 4.0f)});
|
||||
ProcessQueuedSrgCompilations(materialSrgAsset);
|
||||
ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName());
|
||||
EXPECT_TRUE(testData.GetMaterial()->Compile());
|
||||
EXPECT_EQ(Vector4(1.0f, 2.0f, 3.0f, 4.0f) / 4.0f, testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant<Vector4>(testData.GetSrgConstantIndex()));
|
||||
}
|
||||
@@ -444,13 +452,14 @@ namespace UnitTest
|
||||
end
|
||||
)";
|
||||
|
||||
Data::Asset<ShaderResourceGroupAsset> materialSrgAsset = CreateCommonTestMaterialSrgAsset();
|
||||
auto materialSrgLayout = CreateCommonTestMaterialSrgLayout();
|
||||
auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout);
|
||||
|
||||
TestMaterialData testData;
|
||||
testData.Setup(materialSrgAsset, MaterialPropertyDataType::Color, "general.TestColor", "m_color", functorScript);
|
||||
testData.Setup(materialSrgLayout, MaterialPropertyDataType::Color, "general.TestColor", "m_color", functorScript);
|
||||
|
||||
testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{Color(1.0f, 0.5f, 0.4f, 0.5f)});
|
||||
ProcessQueuedSrgCompilations(materialSrgAsset);
|
||||
ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName());
|
||||
EXPECT_TRUE(testData.GetMaterial()->Compile());
|
||||
EXPECT_EQ(Color(0.5f, 0.25f, 0.2f, 0.5f), testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant<Color>(testData.GetSrgConstantIndex()));
|
||||
}
|
||||
@@ -472,13 +481,14 @@ namespace UnitTest
|
||||
end
|
||||
)";
|
||||
|
||||
Data::Asset<ShaderResourceGroupAsset> materialSrgAsset = CreateCommonTestMaterialSrgAsset();
|
||||
auto materialSrgLayout = CreateCommonTestMaterialSrgLayout();
|
||||
auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout);
|
||||
|
||||
TestMaterialData testData;
|
||||
testData.Setup(materialSrgAsset, MaterialPropertyDataType::Float, "general.Scale", "m_float3x3", functorScript);
|
||||
testData.Setup(materialSrgLayout, MaterialPropertyDataType::Float, "general.Scale", "m_float3x3", functorScript);
|
||||
|
||||
testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{0.5f});
|
||||
ProcessQueuedSrgCompilations(materialSrgAsset);
|
||||
ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName());
|
||||
EXPECT_TRUE(testData.GetMaterial()->Compile());
|
||||
EXPECT_EQ(Matrix3x3::CreateScale(Vector3(0.5f, 0.5f, 1.0f)), testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant<Matrix3x3>(testData.GetSrgConstantIndex()));
|
||||
}
|
||||
@@ -500,13 +510,14 @@ namespace UnitTest
|
||||
end
|
||||
)";
|
||||
|
||||
Data::Asset<ShaderResourceGroupAsset> materialSrgAsset = CreateCommonTestMaterialSrgAsset();
|
||||
auto materialSrgLayout = CreateCommonTestMaterialSrgLayout();
|
||||
auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout);
|
||||
|
||||
TestMaterialData testData;
|
||||
testData.Setup(materialSrgAsset, MaterialPropertyDataType::Vector3, "general.Offset", "m_float4x4", functorScript);
|
||||
testData.Setup(materialSrgLayout, MaterialPropertyDataType::Vector3, "general.Offset", "m_float4x4", functorScript);
|
||||
|
||||
testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{Vector3(1.0f, 2.0f, 3.0f)});
|
||||
ProcessQueuedSrgCompilations(materialSrgAsset);
|
||||
ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName());
|
||||
EXPECT_TRUE(testData.GetMaterial()->Compile());
|
||||
EXPECT_EQ(Matrix4x4::CreateTranslation(Vector3(1.0f, 2.0f, 3.0f)), testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant<Matrix4x4>(testData.GetSrgConstantIndex()));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user