using NUnit.Framework; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; using ShaderVariantLogLevel = UnityEngine.Rendering.ShaderVariantLogLevel; namespace UnityEditor.Rendering.Universal.Test.GlobalSettingsMigration { class ShaderStrippingSettingsMigrationTest : RenderPipelineGraphicsSettingsMigrationTestBase { class TestCase1 : IRenderPipelineGraphicsSettingsTestCase { public void SetUp(UniversalRenderPipelineGlobalSettings globalSettingsAsset, UniversalRenderPipelineAsset renderPipelineAsset) { #pragma warning disable 618 // Type or member is obsolete globalSettingsAsset.m_ShaderStrippingSetting.exportShaderVariants = false; globalSettingsAsset.m_ShaderStrippingSetting.shaderVariantLogLevel = ShaderVariantLogLevel.AllShaders; #pragma warning restore 618 globalSettingsAsset.m_AssetVersion = 5; } public bool IsMigrationCorrect(ShaderStrippingSetting settings, out string message) { message = string.Empty; bool isMigrationCorrect = true; isMigrationCorrect &= settings.exportShaderVariants == false; isMigrationCorrect &= ShaderVariantLogLevel.AllShaders == settings.shaderVariantLogLevel; return isMigrationCorrect; } } class TestCase2 : IRenderPipelineGraphicsSettingsTestCase { public void SetUp(UniversalRenderPipelineGlobalSettings globalSettingsAsset, UniversalRenderPipelineAsset renderPipelineAsset) { #pragma warning disable 618 // Type or member is obsolete globalSettingsAsset.supportRuntimeDebugDisplay = true; #pragma warning restore 618 globalSettingsAsset.m_AssetVersion = 1; } public bool IsMigrationCorrect(ShaderStrippingSetting settings, out string message) { message = string.Empty; bool isMigrationCorrect = true; isMigrationCorrect &= settings.stripRuntimeDebugShaders == false; return isMigrationCorrect; } } static TestCaseData[] s_TestCaseDatas = { new TestCaseData(new TestCase1()) .SetName( "When performing a migration of exportShaderVariants and shaderVariantLogLevel, settings are being transferred correctly"), new TestCaseData(new TestCase2()) .SetName( "When performing a full migration of strip debug variants,, settings are being transferred correctly from the HDRP asset to the Render Pipeline Graphics Settings"), }; [Test, TestCaseSource(nameof(s_TestCaseDatas))] public void PerformMigration(IRenderPipelineGraphicsSettingsTestCase testCase) { base.DoTest(testCase); } } class URPShaderStrippingSettingMigrationTest : RenderPipelineGraphicsSettingsMigrationTestBase { class TestCase : IRenderPipelineGraphicsSettingsTestCase { public void SetUp(UniversalRenderPipelineGlobalSettings globalSettingsAsset, UniversalRenderPipelineAsset renderPipelineAsset) { #pragma warning disable 618 // Type or member is obsolete globalSettingsAsset.m_URPShaderStrippingSetting.stripScreenCoordOverrideVariants = false; globalSettingsAsset.m_URPShaderStrippingSetting.stripUnusedPostProcessingVariants = true; globalSettingsAsset.m_URPShaderStrippingSetting.stripUnusedVariants = false; #pragma warning restore 618 globalSettingsAsset.m_AssetVersion = 5; } public bool IsMigrationCorrect(URPShaderStrippingSetting settings, out string message) { message = string.Empty; bool isMigrationCorrect = true; isMigrationCorrect &= settings.stripUnusedVariants == false; isMigrationCorrect &= settings.stripScreenCoordOverrideVariants == false; isMigrationCorrect &= settings.stripUnusedPostProcessingVariants; return isMigrationCorrect; } } static TestCaseData[] s_TestCaseDatas = { new TestCaseData(new TestCase()) .SetName( "When performing a migration of exportShaderVariants and shaderVariantLogLevel, settings are being transferred correctly"), }; [Test, TestCaseSource(nameof(s_TestCaseDatas))] public void PerformMigration(IRenderPipelineGraphicsSettingsTestCase testCase) { base.DoTest(testCase); } } }