public ref FrameSettings GetDefaultFrameSettings(FrameSettingsRenderType type) { switch (type) { case FrameSettingsRenderType.Camera: return(ref m_RenderingPathDefaultCameraFrameSettings); case FrameSettingsRenderType.CustomOrBakedReflection: return(ref m_RenderingPathDefaultBakedOrCustomReflectionFrameSettings); case FrameSettingsRenderType.RealtimeReflection: return(ref m_RenderingPathDefaultRealtimeReflectionFrameSettings); default: throw new ArgumentException("Unknown FrameSettingsRenderType"); } }
// deactivate this test for template package making issue //[Test] public void FrameSettingsAggregation() { for (int i = 0; i < 10; ++i) { //init FrameSettings fs = default; FrameSettingsOverrideMask fso = default; FrameSettingsRenderType defaultFSType = RandomUtilities.RandomEnumValue <FrameSettingsRenderType>(i); FrameSettings defaultFS; FrameSettings result = FrameSettings.NewDefaultCamera(); FrameSettings tester = default; RenderPipelineSettings supportedFeatures = new RenderPipelineSettings(); switch (defaultFSType) { case FrameSettingsRenderType.Camera: defaultFS = FrameSettings.NewDefaultCamera(); break; case FrameSettingsRenderType.CustomOrBakedReflection: defaultFS = FrameSettings.NewDefaultCustomOrBakeReflectionProbe(); break; case FrameSettingsRenderType.RealtimeReflection: defaultFS = FrameSettings.NewDefaultRealtimeReflectionProbe(); break; default: throw new ArgumentException("Unknown FrameSettingsRenderType"); } //change randomly override values for (int j = 0; j < 10; ++j) { FrameSettingsField field = RandomUtilities.RandomEnumValue <FrameSettingsField>((i + 0.5f) * (j + 0.3f)); fs.SetEnabled(field, RandomUtilities.RandomBool((i + 1) * j)); fso.mask[(uint)field] = true; } //create and init gameobjects var go = new GameObject("TestObject"); m_ToClean = go; var cam = go.AddComponent <Camera>(); var add = cam.GetComponent <HDAdditionalCameraData>() ?? cam.gameObject.AddComponent <HDAdditionalCameraData>(); Assert.True(add != null && !add.Equals(null)); add.renderingPathCustomFrameSettings = fs; add.renderingPathCustomFrameSettingsOverrideMask = fso; add.defaultFrameSettings = defaultFSType; add.customRenderingSettings = true; //gather data two different ways FrameSettings.AggregateFrameSettings(ref result, cam, add, ref defaultFS, supportedFeatures); foreach (FrameSettingsField field in Enum.GetValues(typeof(FrameSettingsField))) { tester.SetEnabled(field, fso.mask[(uint)field] ? fs.IsEnabled(field) : defaultFS.IsEnabled(field)); } tester.lodBias = result.lodBias; tester.lodBiasMode = result.lodBiasMode; tester.maximumLODLevel = result.maximumLODLevel; tester.maximumLODLevelMode = result.maximumLODLevelMode; FrameSettings.Sanitize(ref tester, cam, supportedFeatures); //test Assert.AreEqual(result, tester); Object.DestroyImmediate(go); } }