static void Drawer_SectionLightingSettings(SerializedFrameSettings serialized, Editor owner, bool withOverride)
        {
            RenderPipelineSettings hdrpSettings         = GetHDRPAssetFor(owner).currentPlatformRenderPipelineSettings;
            FrameSettings          defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
            var area = OverridableFrameSettingsArea.GetGroupContent(1, defaultFrameSettings, serialized);

            area.AmmendInfo(FrameSettingsField.Shadowmask, overrideable: () => hdrpSettings.supportShadowMask);
            area.AmmendInfo(FrameSettingsField.SSR, overrideable: () => hdrpSettings.supportSSR);
            area.AmmendInfo(FrameSettingsField.TransparentSSR, overrideable: () => (hdrpSettings.supportSSR && hdrpSettings.supportSSRTransparent));
            area.AmmendInfo(FrameSettingsField.SSAO, overrideable: () => hdrpSettings.supportSSAO);

            // SSS
            area.AmmendInfo(
                FrameSettingsField.SubsurfaceScattering,
                overridedDefaultValue: hdrpSettings.supportSubsurfaceScattering,
                overrideable: () => hdrpSettings.supportSubsurfaceScattering
                );
            area.AmmendInfo(
                FrameSettingsField.SssQualityMode,
                overridedDefaultValue: SssQualityMode.FromQualitySettings,
                customGetter: () => serialized.sssQualityMode.GetEnumValue <SssQualityMode>(),
                customSetter: v => serialized.sssQualityMode.SetEnumValue((SssQualityMode)v),
                customOverrideable: () => hdrpSettings.supportSubsurfaceScattering &&
                (serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false),
                hasMixedValues: serialized.sssQualityMode.hasMultipleDifferentValues
                );
            area.AmmendInfo(FrameSettingsField.SssQualityLevel,
                            overridedDefaultValue: ScalableLevel3ForFrameSettingsUIOnly.Low,
                            customGetter:       () => (ScalableLevel3ForFrameSettingsUIOnly)serialized.sssQualityLevel.intValue, // 3 levels
                            customSetter:       v => serialized.sssQualityLevel.intValue = Math.Max(0, Math.Min((int)v, 2)),     // Levels 0-2
                            customOverrideable: () => hdrpSettings.supportSubsurfaceScattering &&
                            (serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false) &&
                            (serialized.sssQualityMode.GetEnumValue <SssQualityMode>() == SssQualityMode.FromQualitySettings),
                            hasMixedValues: serialized.sssQualityLevel.hasMultipleDifferentValues
                            );
            area.AmmendInfo(FrameSettingsField.SssCustomSampleBudget,
                            overridedDefaultValue: (int)DefaultSssSampleBudgetForQualityLevel.Low,
                            customGetter:       () => serialized.sssCustomSampleBudget.intValue,
                            customSetter:       v => serialized.sssCustomSampleBudget.intValue = Math.Max(1, Math.Min((int)v, (int)DefaultSssSampleBudgetForQualityLevel.Max)),
                            customOverrideable: () => hdrpSettings.supportSubsurfaceScattering &&
                            (serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false) &&
                            (serialized.sssQualityMode.GetEnumValue <SssQualityMode>() != SssQualityMode.FromQualitySettings),
                            hasMixedValues: serialized.sssCustomSampleBudget.hasMultipleDifferentValues
                            );

            area.AmmendInfo(FrameSettingsField.Volumetrics, overrideable: () => hdrpSettings.supportVolumetrics);
            area.AmmendInfo(FrameSettingsField.ReprojectionForVolumetrics, overrideable: () => hdrpSettings.supportVolumetrics);
            area.AmmendInfo(FrameSettingsField.LightLayers, overrideable: () => hdrpSettings.supportLightLayers);
            area.AmmendInfo(FrameSettingsField.ProbeVolume, overrideable: () => hdrpSettings.supportProbeVolume);
            area.AmmendInfo(FrameSettingsField.ScreenSpaceShadows, overrideable: () => hdrpSettings.hdShadowInitParams.supportScreenSpaceShadows);
            area.Draw(withOverride);
        }
Example #2
0
        static internal void Drawer_SectionLightingSettings(SerializedFrameSettings serialized, Editor owner, bool withOverride)
        {
            bool isGUIenabled = GUI.enabled;

            FrameSettings?         defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
            var                    hdrpAsset            = GetHDRPAssetFor(owner);
            RenderPipelineSettings qualityLevelSettings = hdrpAsset?.currentPlatformRenderPipelineSettings ?? default;

            var area = OverridableFrameSettingsArea.GetGroupContent(1, defaultFrameSettings, serialized);

            area.AmmendInfo(FrameSettingsField.Volumetrics, ignoreDependencies: true);
            area.AmmendInfo(FrameSettingsField.ReprojectionForVolumetrics, ignoreDependencies: true);
            area.AmmendInfo(FrameSettingsField.TransparentSSR, ignoreDependencies: true);

            //TODO: Remove hideUI when out of experimental. I don't like hideUI it make things more difficult to add a FrameSettings at a given position.
            //      This should not be used except for experimental stuff (it is not compliant with the remaining of UX flows anyway)
            area.AmmendInfo(FrameSettingsField.ProbeVolume, hideInUI: !HDRenderPipelineGlobalSettings.Ensure().supportProbeVolumes);
            area.AmmendInfo(FrameSettingsField.NormalizeReflectionProbeWithProbeVolume, hideInUI: !HDRenderPipelineGlobalSettings.Ensure().supportProbeVolumes);

            area.AmmendInfo(
                FrameSettingsField.SssQualityMode,
                overridedDefaultValue: SssQualityMode.FromQualitySettings,
                customGetter: () => serialized.sssQualityMode.GetEnumValue <SssQualityMode>(),
                customSetter: v => serialized.sssQualityMode.SetEnumValue((SssQualityMode)v),
                overrideable: () => serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false,
                ignoreDependencies: true,
                hasMixedValues: serialized.sssQualityMode.hasMultipleDifferentValues
                );
            area.AmmendInfo(FrameSettingsField.SssQualityLevel,
                            overridedDefaultValue: ScalableLevel3ForFrameSettingsUIOnly.Low,
                            customGetter: () => (ScalableLevel3ForFrameSettingsUIOnly)serialized.sssQualityLevel.intValue, // 3 levels
                            customSetter: v => serialized.sssQualityLevel.intValue = Math.Max(0, Math.Min((int)v, 2)),     // Levels 0-2
                            overrideable: () => (serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false) &&
                            (serialized.sssQualityMode.GetEnumValue <SssQualityMode>() == SssQualityMode.FromQualitySettings),
                            ignoreDependencies: true,
                            hasMixedValues: serialized.sssQualityLevel.hasMultipleDifferentValues
                            );
            area.AmmendInfo(FrameSettingsField.SssCustomSampleBudget,
                            overridedDefaultValue: (int)DefaultSssSampleBudgetForQualityLevel.Low,
                            customGetter: () => serialized.sssCustomSampleBudget.intValue,
                            customSetter: v => serialized.sssCustomSampleBudget.intValue = Math.Max(1, Math.Min((int)v, (int)DefaultSssSampleBudgetForQualityLevel.Max)),
                            overrideable: () => (serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false) &&
                            (serialized.sssQualityMode.GetEnumValue <SssQualityMode>() != SssQualityMode.FromQualitySettings),
                            ignoreDependencies: true,
                            hasMixedValues: serialized.sssCustomSampleBudget.hasMultipleDifferentValues
                            );
            area.Draw(withOverride);

            GUI.enabled = isGUIenabled;
        }
Example #3
0
        static void Drawer_SectionLightingSettings(SerializedFrameSettings serialized, Editor owner, bool withOverride)
        {
            RenderPipelineSettings hdrpSettings         = GetHDRPAssetFor(owner).currentPlatformRenderPipelineSettings;
            FrameSettings          defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
            var area = OverridableFrameSettingsArea.GetGroupContent(1, defaultFrameSettings, serialized);

            area.AmmendInfo(FrameSettingsField.ShadowMask, overrideable: () => hdrpSettings.supportShadowMask);
            area.AmmendInfo(FrameSettingsField.SSR, overrideable: () => hdrpSettings.supportSSR);
            area.AmmendInfo(FrameSettingsField.SSAO, overrideable: () => hdrpSettings.supportSSAO);
            area.AmmendInfo(FrameSettingsField.SubsurfaceScattering, overrideable: () => hdrpSettings.supportSubsurfaceScattering);
            area.AmmendInfo(FrameSettingsField.Volumetrics, overrideable: () => hdrpSettings.supportVolumetrics);
            area.AmmendInfo(FrameSettingsField.ReprojectionForVolumetrics, overrideable: () => hdrpSettings.supportVolumetrics);
            area.AmmendInfo(FrameSettingsField.LightLayers, overrideable: () => hdrpSettings.supportLightLayers);
            area.Draw(withOverride);
        }
Example #4
0
        public override void LoadSettingsFromQualityPreset(RenderPipelineSettings settings, int level)
        {
            // RTAO
            CopySetting(ref m_RayLength, settings.lightingQualitySettings.RTAORayLength[level]);
            CopySetting(ref m_SampleCount, settings.lightingQualitySettings.RTAOSampleCount[level]);
            CopySetting(ref m_Denoise, settings.lightingQualitySettings.RTAODenoise[level]);
            CopySetting(ref m_DenoiserRadius, settings.lightingQualitySettings.RTAODenoiserRadius[level]);

            // SSAO
            CopySetting(ref m_MaximumRadiusInPixels, settings.lightingQualitySettings.AOMaximumRadiusPixels[level]);
            CopySetting(ref m_FullResolution, settings.lightingQualitySettings.AOFullRes[level]);
            CopySetting(ref m_StepCount, settings.lightingQualitySettings.AOStepCount[level]);
            CopySetting(ref m_DirectionCount, settings.lightingQualitySettings.AODirectionCount[level]);
            CopySetting(ref m_BilateralUpsample, settings.lightingQualitySettings.AOBilateralUpsample[level]);
        }
        static void Drawer_SectionRenderingPasses(SerializedFrameSettings serialized, Editor owner, bool withOverride)
        {
            RenderPipelineSettings  hdrpSettings         = GetHDRPAssetFor(owner).renderPipelineSettings;
            FrameSettings           defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
            OverridableSettingsArea area = new OverridableSettingsArea(8);

            area.Add(serialized.enableTransparentPrepass, transparentPrepassContent, () => serialized.overridesTransparentPrepass, a => serialized.overridesTransparentPrepass     = a, defaultValue: defaultFrameSettings.enableTransparentPrepass);
            area.Add(serialized.enableTransparentPostpass, transparentPostpassContent, () => serialized.overridesTransparentPostpass, a => serialized.overridesTransparentPostpass = a, defaultValue: defaultFrameSettings.enableTransparentPostpass);
            area.Add(serialized.enableMotionVectors, motionVectorContent, () => serialized.overridesMotionVectors, a => serialized.overridesMotionVectors = a, () => hdrpSettings.supportMotionVectors, defaultValue: defaultFrameSettings.enableMotionVectors);
            area.Add(serialized.enableObjectMotionVectors, objectMotionVectorsContent, () => serialized.overridesObjectMotionVectors, a => serialized.overridesObjectMotionVectors = a, () => hdrpSettings.supportMotionVectors && serialized.enableMotionVectors.boolValue, defaultValue: defaultFrameSettings.enableObjectMotionVectors, indent: 1);
            area.Add(serialized.enableDecals, decalsContent, () => serialized.overridesDecals, a => serialized.overridesDecals = a, () => hdrpSettings.supportDecals, defaultValue: defaultFrameSettings.enableDecals);
            area.Add(serialized.enableRoughRefraction, roughRefractionContent, () => serialized.overridesRoughRefraction, a => serialized.overridesRoughRefraction = a, defaultValue: defaultFrameSettings.enableRoughRefraction);
            area.Add(serialized.enableDistortion, distortionContent, () => serialized.overridesDistortion, a => serialized.overridesDistortion     = a, () => hdrpSettings.supportDistortion, defaultValue: defaultFrameSettings.enableDistortion);
            area.Add(serialized.enablePostprocess, postprocessContent, () => serialized.overridesPostprocess, a => serialized.overridesPostprocess = a, defaultValue: defaultFrameSettings.enablePostprocess);
            area.Draw(withOverride);
        }
        public override void LoadSettingsFromQualityPreset(RenderPipelineSettings settings, int level)
        {
            // RTGI
            CopySetting(ref m_RayLength, settings.lightingQualitySettings.RTGIRayLength[level]);
            CopySetting(ref m_ClampValue, settings.lightingQualitySettings.RTGIClampValue[level]);
            CopySetting(ref m_FullResolution, settings.lightingQualitySettings.RTGIFullResolution[level]);
            CopySetting(ref m_UpscaleRadius, settings.lightingQualitySettings.RTGIUpScaleRadius[level]);
            CopySetting(ref m_Denoise, settings.lightingQualitySettings.RTGIDenoise[level]);
            CopySetting(ref m_HalfResolutionDenoiser, settings.lightingQualitySettings.RTGIHalfResDenoise[level]);
            CopySetting(ref m_DenoiserRadius, settings.lightingQualitySettings.RTGIDenoiserRadius[level]);
            CopySetting(ref m_SecondDenoiserPass, settings.lightingQualitySettings.RTGISecondDenoise[level]);

            // SSGI
            CopySetting(ref m_RaySteps, settings.lightingQualitySettings.SSGIRaySteps[level]);
            CopySetting(ref m_FilterRadius, settings.lightingQualitySettings.SSGIFilterRadius[level]);
        }
        static void Drawer_SectionRenderingSettings(FrameSettingsUI s, SerializedFrameSettings p, Editor owner, bool withOverride)
        {
            //disable temporarily as FrameSettings are not supported for Baked probe at the moment
            using (new EditorGUI.DisabledScope((owner is HDProbeEditor) && (owner as HDProbeEditor).GetTarget(owner.target).mode != ReflectionProbeMode.Realtime || (owner is HDRenderPipelineEditor) && HDRenderPipelineUI.selectedFrameSettings == HDRenderPipelineUI.SelectedFrameSettings.BakedOrCustomReflection))
            {
                RenderPipelineSettings  hdrpSettings         = (GraphicsSettings.renderPipelineAsset as HDRenderPipelineAsset).renderPipelineSettings;
                FrameSettings           defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
                OverridableSettingsArea area = new OverridableSettingsArea(6);
                LitShaderMode           defaultShaderLitMode;
                switch (hdrpSettings.supportedLitShaderMode)
                {
                case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
                    defaultShaderLitMode = LitShaderMode.Forward;
                    break;

                case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
                    defaultShaderLitMode = LitShaderMode.Deferred;
                    break;

                case RenderPipelineSettings.SupportedLitShaderMode.Both:
                    defaultShaderLitMode = defaultFrameSettings.shaderLitMode;
                    break;

                default:
                    throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
                }

                area.Add(p.litShaderMode, litShaderModeContent, () => p.overridesShaderLitMode, a => p.overridesShaderLitMode = a,
                         () => !GL.wireframe && hdrpSettings.supportedLitShaderMode == RenderPipelineSettings.SupportedLitShaderMode.Both,
                         defaultValue: defaultShaderLitMode);

                bool assetAllowMSAA         = hdrpSettings.supportedLitShaderMode != RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly && hdrpSettings.supportMSAA;
                bool frameSettingsAllowMSAA = p.litShaderMode.enumValueIndex == (int)LitShaderMode.Forward && p.overridesShaderLitMode || !p.overridesShaderLitMode && defaultShaderLitMode == LitShaderMode.Forward;
                area.Add(p.enableMSAA, msaaContent, () => p.overridesMSAA, a => p.overridesMSAA = a,
                         () => !GL.wireframe &&
                         assetAllowMSAA && frameSettingsAllowMSAA,
                         defaultValue: defaultFrameSettings.enableMSAA && hdrpSettings.supportMSAA && !GL.wireframe && (hdrpSettings.supportedLitShaderMode & RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly) != 0 && (p.overridesShaderLitMode && p.litShaderMode.enumValueIndex == (int)LitShaderMode.Forward || !p.overridesShaderLitMode && defaultFrameSettings.shaderLitMode == (int)LitShaderMode.Forward));
                area.Add(p.enableDepthPrepassWithDeferredRendering, depthPrepassWithDeferredRenderingContent, () => p.overridesDepthPrepassWithDeferredRendering, a => p.overridesDepthPrepassWithDeferredRendering = a,
                         () => (defaultFrameSettings.shaderLitMode == LitShaderMode.Deferred && !p.overridesShaderLitMode || p.overridesShaderLitMode && p.litShaderMode.enumValueIndex == (int)LitShaderMode.Deferred) && (hdrpSettings.supportedLitShaderMode & RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly) != 0,
                         defaultValue: defaultFrameSettings.enableDepthPrepassWithDeferredRendering && (hdrpSettings.supportedLitShaderMode & RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly) != 0 && p.litShaderMode.enumValueIndex == (int)LitShaderMode.Deferred);
                area.Add(p.enableAsyncCompute, asyncComputeContent, () => p.overridesAsyncCompute, a => p.overridesAsyncCompute     = a, () => SystemInfo.supportsAsyncCompute, defaultValue: defaultFrameSettings.enableAsyncCompute);
                area.Add(p.enableOpaqueObjects, opaqueObjectsContent, () => p.overridesOpaqueObjects, a => p.overridesOpaqueObjects = a, defaultValue: defaultFrameSettings.enableOpaqueObjects);
                area.Add(p.enableTransparentObjects, transparentObjectsContent, () => p.overridesTransparentObjects, a => p.overridesTransparentObjects = a, defaultValue: defaultFrameSettings.enableTransparentObjects);
                area.Add(p.enableRealtimePlanarReflection, realtimePlanarReflectionContent, () => p.overridesRealtimePlanarReflection, a => p.overridesRealtimePlanarReflection = a, defaultValue: defaultFrameSettings.enableRealtimePlanarReflection);
                area.Draw(withOverride);
            }
        }
Example #8
0
        static internal void Drawer_SectionLightingSettings(SerializedFrameSettings serialized, Editor owner, bool withOverride)
        {
            bool isGUIenabled = GUI.enabled;

            FrameSettings?         defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
            var                    hdrpAsset            = GetHDRPAssetFor(owner);
            RenderPipelineSettings qualityLevelSettings = hdrpAsset?.currentPlatformRenderPipelineSettings ?? default;

            var area = OverridableFrameSettingsArea.GetGroupContent(1, defaultFrameSettings, serialized);

            area.AmmendInfo(FrameSettingsField.Volumetrics, ignoreDependencies: true);
            area.AmmendInfo(FrameSettingsField.ReprojectionForVolumetrics, ignoreDependencies: true);
            area.AmmendInfo(FrameSettingsField.TransparentSSR, ignoreDependencies: true);
            area.AmmendInfo(FrameSettingsField.ProbeVolume, hideInUI: !HDRenderPipelineGlobalSettings.Ensure().supportProbeVolumes);

            area.AmmendInfo(
                FrameSettingsField.SssQualityMode,
                overridedDefaultValue: SssQualityMode.FromQualitySettings,
                customGetter: () => serialized.sssQualityMode.GetEnumValue <SssQualityMode>(),
                customSetter: v => serialized.sssQualityMode.SetEnumValue((SssQualityMode)v),
                overrideable: () => serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false,
                ignoreDependencies: true,
                hasMixedValues: serialized.sssQualityMode.hasMultipleDifferentValues
                );
            area.AmmendInfo(FrameSettingsField.SssQualityLevel,
                            overridedDefaultValue: ScalableLevel3ForFrameSettingsUIOnly.Low,
                            customGetter:       () => (ScalableLevel3ForFrameSettingsUIOnly)serialized.sssQualityLevel.intValue, // 3 levels
                            customSetter:       v => serialized.sssQualityLevel.intValue = Math.Max(0, Math.Min((int)v, 2)),     // Levels 0-2
                            overrideable: () => (serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false) &&
                            (serialized.sssQualityMode.GetEnumValue <SssQualityMode>() == SssQualityMode.FromQualitySettings),
                            ignoreDependencies: true,
                            hasMixedValues: serialized.sssQualityLevel.hasMultipleDifferentValues
                            );
            area.AmmendInfo(FrameSettingsField.SssCustomSampleBudget,
                            overridedDefaultValue: (int)DefaultSssSampleBudgetForQualityLevel.Low,
                            customGetter:       () => serialized.sssCustomSampleBudget.intValue,
                            customSetter:       v => serialized.sssCustomSampleBudget.intValue = Math.Max(1, Math.Min((int)v, (int)DefaultSssSampleBudgetForQualityLevel.Max)),
                            overrideable: () => (serialized.IsEnabled(FrameSettingsField.SubsurfaceScattering) ?? false) &&
                            (serialized.sssQualityMode.GetEnumValue <SssQualityMode>() != SssQualityMode.FromQualitySettings),
                            ignoreDependencies: true,
                            hasMixedValues: serialized.sssCustomSampleBudget.hasMultipleDifferentValues
                            );
            area.Draw(withOverride);

            GUI.enabled = isGUIenabled;
        }
Example #9
0
 static void Drawer_SectionRenderingSettings(FrameSettingsUI s, SerializedFrameSettings p, Editor owner, bool withOverride)
 {
     //disable temporarily as FrameSettings are not supported for Baked probe at the moment
     using (new EditorGUI.DisabledScope((owner is HDProbeEditor) && (owner as HDProbeEditor).GetTarget(owner.target).mode != ReflectionProbeMode.Realtime || (owner is HDRenderPipelineEditor) && HDRenderPipelineUI.selectedFrameSettings == HDRenderPipelineUI.SelectedFrameSettings.BakedOrCustomReflection))
     {
         RenderPipelineSettings  hdrpSettings         = (GraphicsSettings.renderPipelineAsset as HDRenderPipelineAsset).renderPipelineSettings;
         FrameSettings           defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
         OverridableSettingsArea area = new OverridableSettingsArea(6);
         area.Add(p.enableForwardRenderingOnly, forwardRenderingOnlyContent, () => p.overridesForwardRenderingOnly, a => p.overridesForwardRenderingOnly = a, () => !GL.wireframe && !hdrpSettings.supportOnlyForward, defaultValue: defaultFrameSettings.enableForwardRenderingOnly || hdrpSettings.supportOnlyForward);
         area.Add(p.enableMSAA, msaaContent, () => p.overridesMSAA, a => p.overridesMSAA = a, () => hdrpSettings.supportMSAA && (p.enableForwardRenderingOnly.boolValue || (GL.wireframe || hdrpSettings.supportOnlyForward) && (defaultFrameSettings.enableForwardRenderingOnly || hdrpSettings.supportOnlyForward)), defaultValue: defaultFrameSettings.enableMSAA && hdrpSettings.supportMSAA && !GL.wireframe && !hdrpSettings.supportOnlyForward && p.enableForwardRenderingOnly.boolValue, indent: 1);
         area.Add(p.enableDepthPrepassWithDeferredRendering, depthPrepassWithDeferredRenderingContent, () => p.overridesDepthPrepassWithDeferredRendering, a => p.overridesDepthPrepassWithDeferredRendering = a, () => (!defaultFrameSettings.enableForwardRenderingOnly && !p.overridesForwardRenderingOnly || p.overridesForwardRenderingOnly && !p.enableForwardRenderingOnly.boolValue) && !hdrpSettings.supportOnlyForward, defaultValue: defaultFrameSettings.enableDepthPrepassWithDeferredRendering && !hdrpSettings.supportOnlyForward && !p.enableForwardRenderingOnly.boolValue);
         area.Add(p.enableAsyncCompute, asyncComputeContent, () => p.overridesAsyncCompute, a => p.overridesAsyncCompute     = a, () => SystemInfo.supportsAsyncCompute, defaultValue: defaultFrameSettings.enableAsyncCompute);
         area.Add(p.enableOpaqueObjects, opaqueObjectsContent, () => p.overridesOpaqueObjects, a => p.overridesOpaqueObjects = a, defaultValue: defaultFrameSettings.enableOpaqueObjects);
         area.Add(p.enableTransparentObjects, transparentObjectsContent, () => p.overridesTransparentObjects, a => p.overridesTransparentObjects = a, defaultValue: defaultFrameSettings.enableTransparentObjects);
         area.Add(p.enableRealtimePlanarReflection, realtimePlanarReflectionContent, () => p.overridesRealtimePlanarReflection, a => p.overridesRealtimePlanarReflection = a, defaultValue: defaultFrameSettings.enableRealtimePlanarReflection);
         area.Draw(withOverride);
     }
 }
Example #10
0
        public static void SendDefaultValuesEvent()
        {
            if (!EditorAnalytics.enabled)
            {
                return;
            }

            if (EditorAnalytics.RegisterEventWithLimit(k_DefaultsEventName, k_MaxEventsPerHour, k_MaxNumberOfElements, k_VendorKey) != AnalyticsResult.Ok)
            {
                return;
            }

            RenderPipelineSettings defaults = RenderPipelineSettings.NewDefault();

            var data = new DefaultsEventData(AllSettings(defaults));

            EditorAnalytics.SendEventWithLimit(k_DefaultsEventName, data);
        }
        static void Drawer_SectionRenderingSettings(SerializedFrameSettings serialized, Editor owner, bool withOverride)
        {
            RenderPipelineSettings  hdrpSettings         = GetHDRPAssetFor(owner).renderPipelineSettings;
            FrameSettings           defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
            OverridableSettingsArea area = new OverridableSettingsArea(6);
            LitShaderMode           defaultShaderLitMode;

            switch (hdrpSettings.supportedLitShaderMode)
            {
            case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
                defaultShaderLitMode = LitShaderMode.Forward;
                break;

            case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
                defaultShaderLitMode = LitShaderMode.Deferred;
                break;

            case RenderPipelineSettings.SupportedLitShaderMode.Both:
                defaultShaderLitMode = defaultFrameSettings.shaderLitMode;
                break;

            default:
                throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
            }

            area.Add(serialized.litShaderMode, litShaderModeContent, () => serialized.overridesShaderLitMode, a => serialized.overridesShaderLitMode = a,
                     () => !GL.wireframe && hdrpSettings.supportedLitShaderMode == RenderPipelineSettings.SupportedLitShaderMode.Both,
                     defaultValue: defaultShaderLitMode);

            bool assetAllowMSAA         = hdrpSettings.supportedLitShaderMode != RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly && hdrpSettings.supportMSAA;
            bool frameSettingsAllowMSAA = serialized.litShaderMode.enumValueIndex == (int)LitShaderMode.Forward && serialized.overridesShaderLitMode || !serialized.overridesShaderLitMode && defaultShaderLitMode == LitShaderMode.Forward;

            area.Add(serialized.enableMSAA, msaaContent, () => serialized.overridesMSAA, a => serialized.overridesMSAA = a,
                     () => !GL.wireframe &&
                     assetAllowMSAA && frameSettingsAllowMSAA,
                     defaultValue: defaultFrameSettings.enableMSAA && hdrpSettings.supportMSAA && !GL.wireframe && (hdrpSettings.supportedLitShaderMode & RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly) != 0 && (serialized.overridesShaderLitMode && serialized.litShaderMode.enumValueIndex == (int)LitShaderMode.Forward || !serialized.overridesShaderLitMode && defaultFrameSettings.shaderLitMode == (int)LitShaderMode.Forward));
            area.Add(serialized.enableDepthPrepassWithDeferredRendering, depthPrepassWithDeferredRenderingContent, () => serialized.overridesDepthPrepassWithDeferredRendering, a => serialized.overridesDepthPrepassWithDeferredRendering = a,
                     () => (defaultFrameSettings.shaderLitMode == LitShaderMode.Deferred && !serialized.overridesShaderLitMode || serialized.overridesShaderLitMode && serialized.litShaderMode.enumValueIndex == (int)LitShaderMode.Deferred) && (hdrpSettings.supportedLitShaderMode & RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly) != 0,
                     defaultValue: defaultFrameSettings.enableDepthPrepassWithDeferredRendering && (hdrpSettings.supportedLitShaderMode & RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly) != 0 && serialized.litShaderMode.enumValueIndex == (int)LitShaderMode.Deferred);
            area.Add(serialized.enableOpaqueObjects, opaqueObjectsContent, () => serialized.overridesOpaqueObjects, a => serialized.overridesOpaqueObjects = a, defaultValue: defaultFrameSettings.enableOpaqueObjects);
            area.Add(serialized.enableTransparentObjects, transparentObjectsContent, () => serialized.overridesTransparentObjects, a => serialized.overridesTransparentObjects = a, defaultValue: defaultFrameSettings.enableTransparentObjects);
            area.Add(serialized.enableRealtimePlanarReflection, realtimePlanarReflectionContent, () => serialized.overridesRealtimePlanarReflection, a => serialized.overridesRealtimePlanarReflection = a, defaultValue: defaultFrameSettings.enableRealtimePlanarReflection);
            area.Draw(withOverride);
        }
 static void Drawer_SectionRenderingPasses(FrameSettingsUI s, SerializedFrameSettings p, Editor owner, bool withOverride)
 {
     //disable temporarily as FrameSettings are not supported for Baked probe at the moment
     using (new EditorGUI.DisabledScope((owner is HDProbeEditor) && (owner as HDProbeEditor).GetTarget(owner.target).mode != ReflectionProbeMode.Realtime || (owner is HDRenderPipelineEditor) && HDRenderPipelineUI.selectedFrameSettings == HDRenderPipelineUI.SelectedFrameSettings.BakedOrCustomReflection))
     {
         RenderPipelineSettings  hdrpSettings         = (GraphicsSettings.renderPipelineAsset as HDRenderPipelineAsset).renderPipelineSettings;
         FrameSettings           defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
         OverridableSettingsArea area = new OverridableSettingsArea(8);
         area.Add(p.enableTransparentPrepass, transparentPrepassContent, () => p.overridesTransparentPrepass, a => p.overridesTransparentPrepass     = a, defaultValue: defaultFrameSettings.enableTransparentPrepass);
         area.Add(p.enableTransparentPostpass, transparentPostpassContent, () => p.overridesTransparentPostpass, a => p.overridesTransparentPostpass = a, defaultValue: defaultFrameSettings.enableTransparentPostpass);
         area.Add(p.enableMotionVectors, motionVectorContent, () => p.overridesMotionVectors, a => p.overridesMotionVectors = a, () => hdrpSettings.supportMotionVectors, defaultValue: defaultFrameSettings.enableMotionVectors);
         area.Add(p.enableObjectMotionVectors, objectMotionVectorsContent, () => p.overridesObjectMotionVectors, a => p.overridesObjectMotionVectors = a, () => hdrpSettings.supportMotionVectors && p.enableMotionVectors.boolValue, defaultValue: defaultFrameSettings.enableObjectMotionVectors, indent: 1);
         area.Add(p.enableDecals, decalsContent, () => p.overridesDecals, a => p.overridesDecals = a, () => hdrpSettings.supportDecals, defaultValue: defaultFrameSettings.enableDecals);
         area.Add(p.enableRoughRefraction, roughRefractionContent, () => p.overridesRoughRefraction, a => p.overridesRoughRefraction = a, defaultValue: defaultFrameSettings.enableRoughRefraction);
         area.Add(p.enableDistortion, distortionContent, () => p.overridesDistortion, a => p.overridesDistortion     = a, defaultValue: defaultFrameSettings.enableDistortion);
         area.Add(p.enablePostprocess, postprocessContent, () => p.overridesPostprocess, a => p.overridesPostprocess = a, defaultValue: defaultFrameSettings.enablePostprocess);
         area.Draw(withOverride);
     }
 }
        static void Drawer_SectionLightingSettings(SerializedFrameSettings serialized, Editor owner, bool withOverride)
        {
            RenderPipelineSettings  hdrpSettings         = GetHDRPAssetFor(owner).renderPipelineSettings;
            FrameSettings           defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
            OverridableSettingsArea area = new OverridableSettingsArea(10);

            area.Add(serialized.enableShadow, shadowContent, () => serialized.overridesShadow, a => serialized.overridesShadow = a, defaultValue: defaultFrameSettings.enableShadow);
            area.Add(serialized.enableContactShadow, contactShadowContent, () => serialized.overridesContactShadow, a => serialized.overridesContactShadow = a, defaultValue: defaultFrameSettings.enableContactShadows);
            area.Add(serialized.enableShadowMask, shadowMaskContent, () => serialized.overridesShadowMask, a => serialized.overridesShadowMask             = a, () => hdrpSettings.supportShadowMask, defaultValue: defaultFrameSettings.enableShadowMask);
            area.Add(serialized.enableSSR, ssrContent, () => serialized.overridesSSR, a => serialized.overridesSSR     = a, () => hdrpSettings.supportSSR, defaultValue: defaultFrameSettings.enableSSR);
            area.Add(serialized.enableSSAO, ssaoContent, () => serialized.overridesSSAO, a => serialized.overridesSSAO = a, () => hdrpSettings.supportSSAO, defaultValue: defaultFrameSettings.enableSSAO);
            area.Add(serialized.enableSubsurfaceScattering, subsurfaceScatteringContent, () => serialized.overridesSubsurfaceScattering, a => serialized.overridesSubsurfaceScattering = a, () => hdrpSettings.supportSubsurfaceScattering, defaultValue: defaultFrameSettings.enableSubsurfaceScattering);
            area.Add(serialized.enableTransmission, transmissionContent, () => serialized.overridesTransmission, a => serialized.overridesTransmission = a, defaultValue: defaultFrameSettings.enableTransmission);
            area.Add(serialized.enableAtmosphericScattering, atmosphericScatteringContent, () => serialized.overridesAtmosphericScaterring, a => serialized.overridesAtmosphericScaterring = a, defaultValue: defaultFrameSettings.enableAtmosphericScattering);
            area.Add(serialized.enableVolumetrics, volumetricContent, () => serialized.overridesVolumetrics, a => serialized.overridesVolumetrics = a, () => hdrpSettings.supportVolumetrics && serialized.enableAtmosphericScattering.boolValue, defaultValue: defaultFrameSettings.enableAtmosphericScattering, indent: 1);
            area.Add(serialized.enableReprojectionForVolumetrics, reprojectionForVolumetricsContent, () => serialized.overridesProjectionForVolumetrics, a => serialized.overridesProjectionForVolumetrics = a, () => hdrpSettings.supportVolumetrics && serialized.enableAtmosphericScattering.boolValue, defaultValue: defaultFrameSettings.enableVolumetrics, indent: 1);
            area.Add(serialized.enableLightLayers, lightLayerContent, () => serialized.overridesLightLayers, a => serialized.overridesLightLayers = a, () => hdrpSettings.supportLightLayers, defaultValue: defaultFrameSettings.enableLightLayers);
            area.Draw(withOverride);
        }
 public override void LoadSettingsFromQualityPreset(RenderPipelineSettings settings, int level)
 {
     // RTR
     if (HDRenderPipeline.pipelineSupportsRayTracing && m_RayTracing.overrideState.boolValue &&
         m_RayTracing.value.boolValue)
     {
         CopySetting(ref m_MinSmoothness, settings.lightingQualitySettings.RTRMinSmoothness[level]);
         CopySetting(ref m_SmoothnessFadeStart, settings.lightingQualitySettings.RTRSmoothnessFadeStart[level]);
         CopySetting(ref m_RayLength, settings.lightingQualitySettings.RTRRayLength[level]);
         CopySetting(ref m_ClampValue, settings.lightingQualitySettings.RTRClampValue[level]);
         CopySetting(ref m_UpscaleRadius, settings.lightingQualitySettings.RTRUpScaleRadius[level]);
         CopySetting(ref m_FullResolution, settings.lightingQualitySettings.RTRFullResolution[level]);
         CopySetting(ref m_Denoise, settings.lightingQualitySettings.RTRDenoise[level]);
         CopySetting(ref m_DenoiserRadius, settings.lightingQualitySettings.RTRDenoiserRadius[level]);
     }
     // SSR
     else
     {
         CopySetting(ref m_RayMaxIterations, settings.lightingQualitySettings.SSRMaxRaySteps[level]);
     }
 }
 static void Drawer_SectionLightingSettings(FrameSettingsUI s, SerializedFrameSettings p, Editor owner, bool withOverride)
 {
     //disable temporarily as FrameSettings are not supported for Baked probe at the moment
     using (new EditorGUI.DisabledScope((owner is HDProbeEditor) && (owner as HDProbeEditor).GetTarget(owner.target).mode != ReflectionProbeMode.Realtime || (owner is HDRenderPipelineEditor) && HDRenderPipelineUI.selectedFrameSettings == HDRenderPipelineUI.SelectedFrameSettings.BakedOrCustomReflection))
     {
         RenderPipelineSettings  hdrpSettings         = (GraphicsSettings.renderPipelineAsset as HDRenderPipelineAsset).renderPipelineSettings;
         FrameSettings           defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
         OverridableSettingsArea area = new OverridableSettingsArea(10);
         area.Add(p.enableShadow, shadowContent, () => p.overridesShadow, a => p.overridesShadow = a, defaultValue: defaultFrameSettings.enableShadow);
         area.Add(p.enableContactShadow, contactShadowContent, () => p.overridesContactShadow, a => p.overridesContactShadow = a, defaultValue: defaultFrameSettings.enableContactShadows);
         area.Add(p.enableShadowMask, shadowMaskContent, () => p.overridesShadowMask, a => p.overridesShadowMask             = a, () => hdrpSettings.supportShadowMask, defaultValue: defaultFrameSettings.enableShadowMask);
         area.Add(p.enableSSR, ssrContent, () => p.overridesSSR, a => p.overridesSSR     = a, () => hdrpSettings.supportSSR, defaultValue: defaultFrameSettings.enableSSR);
         area.Add(p.enableSSAO, ssaoContent, () => p.overridesSSAO, a => p.overridesSSAO = a, () => hdrpSettings.supportSSAO, defaultValue: defaultFrameSettings.enableSSAO);
         area.Add(p.enableSubsurfaceScattering, subsurfaceScatteringContent, () => p.overridesSubsurfaceScattering, a => p.overridesSubsurfaceScattering = a, () => hdrpSettings.supportSubsurfaceScattering, defaultValue: defaultFrameSettings.enableSubsurfaceScattering);
         area.Add(p.enableTransmission, transmissionContent, () => p.overridesTransmission, a => p.overridesTransmission = a, defaultValue: defaultFrameSettings.enableTransmission);
         area.Add(p.enableAtmosphericScattering, atmosphericScatteringContent, () => p.overridesAtmosphericScaterring, a => p.overridesAtmosphericScaterring = a, defaultValue: defaultFrameSettings.enableAtmosphericScattering);
         area.Add(p.enableVolumetrics, volumetricContent, () => p.overridesVolumetrics, a => p.overridesVolumetrics = a, () => hdrpSettings.supportVolumetrics && p.enableAtmosphericScattering.boolValue, defaultValue: defaultFrameSettings.enableAtmosphericScattering, indent: 1);
         area.Add(p.enableReprojectionForVolumetrics, reprojectionForVolumetricsContent, () => p.overridesProjectionForVolumetrics, a => p.overridesProjectionForVolumetrics = a, () => hdrpSettings.supportVolumetrics && p.enableAtmosphericScattering.boolValue, defaultValue: defaultFrameSettings.enableVolumetrics, indent: 1);
         area.Add(p.enableLightLayers, lightLayerContent, () => p.overridesLightLayers, a => p.overridesLightLayers = a, () => hdrpSettings.supportLightLayers, defaultValue: defaultFrameSettings.enableLightLayers);
         area.Draw(withOverride);
     }
 }
Example #16
0
 public override void LoadSettingsFromQualityPreset(RenderPipelineSettings settings, int level)
 {
     // RTR
     if (HDRenderPipeline.pipelineSupportsRayTracing && m_Tracing.overrideState.boolValue &&
         m_Tracing.value.GetEnumValue <RayCastingMode>() != RayCastingMode.RayMarching)
     {
         CopySetting(ref m_MinSmoothness, settings.lightingQualitySettings.RTRMinSmoothness[level]);
         CopySetting(ref m_SmoothnessFadeStart, settings.lightingQualitySettings.RTRSmoothnessFadeStart[level]);
         CopySetting(ref m_RayLength, settings.lightingQualitySettings.RTRRayLength[level]);
         CopySetting(ref m_ClampValue, settings.lightingQualitySettings.RTRClampValue[level]);
         CopySetting(ref m_FullResolution, settings.lightingQualitySettings.RTRFullResolution[level]);
         CopySetting(ref m_RayMaxIterationsRT, settings.lightingQualitySettings.RTRRayMaxIterations[level]);
         CopySetting(ref m_Denoise, settings.lightingQualitySettings.RTRDenoise[level]);
         CopySetting(ref m_DenoiserRadius, settings.lightingQualitySettings.RTRDenoiserRadius[level]);
         CopySetting(ref m_AffectsSmoothSurfaces, settings.lightingQualitySettings.RTRSmoothDenoising[level]);
     }
     // SSR
     else
     {
         CopySetting(ref m_RayMaxIterations, settings.lightingQualitySettings.SSRMaxRaySteps[level]);
     }
 }
 public override void LoadSettingsFromQualityPreset(RenderPipelineSettings settings, int level)
 {
     if (HDRenderPipeline.pipelineSupportsRayTracing && m_Tracing.overrideState.boolValue &&
         m_Tracing.value.GetEnumValue <RayCastingMode>() != RayCastingMode.RayMarching)
     {
         // RTGI
         CopySetting(ref m_RayLength, settings.lightingQualitySettings.RTGIRayLength[level]);
         CopySetting(ref m_ClampValue, settings.lightingQualitySettings.RTGIClampValue[level]);
         CopySetting(ref m_FullResolution, settings.lightingQualitySettings.RTGIFullResolution[level]);
         CopySetting(ref m_UpscaleRadius, settings.lightingQualitySettings.RTGIUpScaleRadius[level]);
         CopySetting(ref m_MaxMixedRaySteps, settings.lightingQualitySettings.RTGIRaySteps[level]);
         CopySetting(ref m_Denoise, settings.lightingQualitySettings.RTGIDenoise[level]);
         CopySetting(ref m_HalfResolutionDenoiser, settings.lightingQualitySettings.RTGIHalfResDenoise[level]);
         CopySetting(ref m_DenoiserRadius, settings.lightingQualitySettings.RTGIDenoiserRadius[level]);
         CopySetting(ref m_SecondDenoiserPass, settings.lightingQualitySettings.RTGISecondDenoise[level]);
     }
     else
     {
         // SSGI
         CopySetting(ref m_RaySteps, settings.lightingQualitySettings.SSGIRaySteps[level]);
         CopySetting(ref m_FilterRadius, settings.lightingQualitySettings.SSGIFilterRadius[level]);
     }
 }
 //separated to add enum popup on default frame settings
 internal static CED.IDrawer InspectorInnerbox(bool withOverride = true) => CED.Group(
     CED.FoldoutGroup(renderingSettingsHeaderContent, Expandable.RenderingPasses, k_ExpandedState, FoldoutOption.Indent | FoldoutOption.Boxed,
                      CED.Group(206, (serialized, owner) => Drawer_SectionRenderingSettings(serialized, owner, withOverride))
                      ),
     CED.FoldoutGroup(lightSettingsHeaderContent, Expandable.LightingSettings, k_ExpandedState, FoldoutOption.Indent | FoldoutOption.Boxed,
                      CED.Group(206, (serialized, owner) => Drawer_SectionLightingSettings(serialized, owner, withOverride))
                      ),
     CED.FoldoutGroup(asyncComputeSettingsHeaderContent, Expandable.AsynComputeSettings, k_ExpandedState, FoldoutOption.Indent | FoldoutOption.Boxed,
                      CED.Group(206, (serialized, owner) => Drawer_SectionAsyncComputeSettings(serialized, owner, withOverride))
                      ),
     CED.FoldoutGroup(lightLoopSettingsHeaderContent, Expandable.LightLoop, k_ExpandedState, FoldoutOption.Indent | FoldoutOption.Boxed,
                      CED.Group(206, (serialized, owner) => Drawer_SectionLightLoopSettings(serialized, owner, withOverride))
                      ),
     CED.Group((serialized, owner) =>
 {
     RenderPipelineSettings hdrpSettings = GetHDRPAssetFor(owner).currentPlatformRenderPipelineSettings;
     if (hdrpSettings.supportRayTracing)
     {
         if (serialized.IsEnabled(FrameSettingsField.AsyncCompute) ?? false)
         {
             EditorGUILayout.HelpBox("With Raytracing, the Asynchronous Execution will be forced to false", MessageType.Warning);
         }
     }
 }));
Example #19
0
 public override void LoadSettingsFromQualityPreset(RenderPipelineSettings settings, int level)
 {
     CopySetting(ref m_SampleCount, settings.postProcessQualitySettings.MotionBlurSampleCount[level]);
 }
Example #20
0
        // 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);
            }
        }
        static void Drawer_SectionRenderingSettings(SerializedFrameSettings serialized, Editor owner, bool withOverride)
        {
            RenderPipelineSettings hdrpSettings         = GetHDRPAssetFor(owner).currentPlatformRenderPipelineSettings;
            FrameSettings          defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
            var area = OverridableFrameSettingsArea.GetGroupContent(0, defaultFrameSettings, serialized);

            LitShaderMode defaultShaderLitMode;

            switch (hdrpSettings.supportedLitShaderMode)
            {
            case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
                defaultShaderLitMode = LitShaderMode.Forward;
                break;

            case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
                defaultShaderLitMode = LitShaderMode.Deferred;
                break;

            case RenderPipelineSettings.SupportedLitShaderMode.Both:
                defaultShaderLitMode = defaultFrameSettings.litShaderMode;
                break;

            default:
                throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
            }

            area.AmmendInfo(FrameSettingsField.LitShaderMode,
                            overrideable: () => hdrpSettings.supportedLitShaderMode == RenderPipelineSettings.SupportedLitShaderMode.Both,
                            overridedDefaultValue: defaultShaderLitMode);

            bool hdrpAssetSupportForward         = hdrpSettings.supportedLitShaderMode != RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly;
            bool hdrpAssetSupportDeferred        = hdrpSettings.supportedLitShaderMode != RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly;
            bool frameSettingsOverrideToForward  = serialized.GetOverrides(FrameSettingsField.LitShaderMode) && serialized.litShaderMode == LitShaderMode.Forward;
            bool frameSettingsOverrideToDeferred = serialized.GetOverrides(FrameSettingsField.LitShaderMode) && serialized.litShaderMode == LitShaderMode.Deferred;
            bool defaultForwardUsed    = !serialized.GetOverrides(FrameSettingsField.LitShaderMode) && defaultShaderLitMode == LitShaderMode.Forward;
            bool defaultDefferedUsed   = !serialized.GetOverrides(FrameSettingsField.LitShaderMode) && defaultShaderLitMode == LitShaderMode.Deferred;
            bool msaaEnablable         = hdrpAssetSupportForward && hdrpSettings.supportMSAA && (frameSettingsOverrideToForward || defaultForwardUsed);
            bool depthPrepassEnablable = hdrpAssetSupportDeferred && (defaultDefferedUsed || frameSettingsOverrideToDeferred);

            area.AmmendInfo(FrameSettingsField.MSAA,
                            overrideable: () => msaaEnablable,
                            overridedDefaultValue: msaaEnablable && defaultFrameSettings.IsEnabled(FrameSettingsField.MSAA),
                            customOverrideable: () =>
            {
                switch (hdrpSettings.supportedLitShaderMode)
                {
                case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
                    return(false);        //negative dependency

                case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
                    return(true);        //negative dependency

                case RenderPipelineSettings.SupportedLitShaderMode.Both:
                    return(!(frameSettingsOverrideToForward || defaultForwardUsed));        //negative dependency

                default:
                    throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
                }
            });
            area.AmmendInfo(FrameSettingsField.DepthPrepassWithDeferredRendering,
                            overrideable: () => depthPrepassEnablable,
                            overridedDefaultValue: depthPrepassEnablable && defaultFrameSettings.IsEnabled(FrameSettingsField.DepthPrepassWithDeferredRendering),
                            customOverrideable: () =>
            {
                switch (hdrpSettings.supportedLitShaderMode)
                {
                case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
                    return(false);

                case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
                    return(true);

                case RenderPipelineSettings.SupportedLitShaderMode.Both:
                    return(frameSettingsOverrideToDeferred || defaultDefferedUsed);

                default:
                    throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
                }
            });

            area.AmmendInfo(FrameSettingsField.RayTracing, overrideable: () => hdrpSettings.supportRayTracing);
            area.AmmendInfo(FrameSettingsField.MotionVectors, overrideable: () => hdrpSettings.supportMotionVectors);
            area.AmmendInfo(FrameSettingsField.ObjectMotionVectors, overrideable: () => hdrpSettings.supportMotionVectors);
            area.AmmendInfo(FrameSettingsField.Decals, overrideable: () => hdrpSettings.supportDecals);
            area.AmmendInfo(FrameSettingsField.Distortion, overrideable: () => hdrpSettings.supportDistortion);

            area.AmmendInfo(
                FrameSettingsField.LODBiasMode,
                overridedDefaultValue: LODBiasMode.FromQualitySettings,
                customGetter: () => serialized.lodBiasMode.GetEnumValue <LODBiasMode>(),
                customSetter: v => serialized.lodBiasMode.SetEnumValue((LODBiasMode)v)
                );
            area.AmmendInfo(FrameSettingsField.LODBiasQualityLevel,
                            overridedDefaultValue: ScalableLevel3ForFrameSettingsUIOnly.Low,
                            customGetter: () => (ScalableLevel3ForFrameSettingsUIOnly)serialized.lodBiasQualityLevel.intValue,
                            customSetter: v => serialized.lodBiasQualityLevel.intValue = (int)v,
                            customOverrideable: () => serialized.lodBiasMode.GetEnumValue <LODBiasMode>() != LODBiasMode.OverrideQualitySettings);

            area.AmmendInfo(FrameSettingsField.LODBias,
                            overridedDefaultValue: QualitySettings.lodBias,
                            customGetter: () => serialized.lodBias.floatValue,
                            customSetter: v => serialized.lodBias.floatValue = (float)v,
                            customOverrideable: () => serialized.lodBiasMode.GetEnumValue <LODBiasMode>() != LODBiasMode.FromQualitySettings,
                            labelOverride: serialized.lodBiasMode.GetEnumValue <LODBiasMode>() == LODBiasMode.ScaleQualitySettings ? "Scale Factor" : "LOD Bias");

            area.AmmendInfo(
                FrameSettingsField.MaximumLODLevelMode,
                overridedDefaultValue: MaximumLODLevelMode.FromQualitySettings,
                customGetter: () => serialized.maximumLODLevelMode.GetEnumValue <MaximumLODLevelMode>(),
                customSetter: v => serialized.maximumLODLevelMode.SetEnumValue((MaximumLODLevelMode)v)
                );
            area.AmmendInfo(FrameSettingsField.MaximumLODLevelQualityLevel,
                            overridedDefaultValue: ScalableLevel3ForFrameSettingsUIOnly.Low,
                            customGetter: () => (ScalableLevel3ForFrameSettingsUIOnly)serialized.maximumLODLevelQualityLevel.intValue,
                            customSetter: v => serialized.maximumLODLevelQualityLevel.intValue = (int)v,
                            customOverrideable: () => serialized.maximumLODLevelMode.GetEnumValue <MaximumLODLevelMode>() != MaximumLODLevelMode.OverrideQualitySettings);

            area.AmmendInfo(FrameSettingsField.MaximumLODLevel,
                            overridedDefaultValue: QualitySettings.maximumLODLevel,
                            customGetter: () => serialized.maximumLODLevel.intValue,
                            customSetter: v => serialized.maximumLODLevel.intValue = (int)v,
                            customOverrideable: () => serialized.maximumLODLevelMode.GetEnumValue <MaximumLODLevelMode>() != MaximumLODLevelMode.FromQualitySettings,
                            labelOverride: serialized.maximumLODLevelMode.GetEnumValue <MaximumLODLevelMode>() == MaximumLODLevelMode.OffsetQualitySettings ? "Offset Factor" : "Maximum LOD Level");

            area.AmmendInfo(FrameSettingsField.MaterialQualityLevel,
                            overridedDefaultValue: defaultFrameSettings.materialQuality.Into(),
                            customGetter: () => ((MaterialQuality)serialized.materialQuality.intValue).Into(),
                            customSetter: v => serialized.materialQuality.intValue = (int)((MaterialQualityMode)v).Into()
                            );

            area.Draw(withOverride);
        }
 /// <summary>
 /// This function should be overriden by a volume component to load preset settings from RenderPipelineSettings
 /// </summary>
 public virtual void LoadSettingsFromQualityPreset(RenderPipelineSettings settings, int level)
 {
 }
        static void Drawer_SectionRenderingSettings(SerializedFrameSettings serialized, Editor owner, bool withOverride)
        {
            RenderPipelineSettings hdrpSettings         = GetHDRPAssetFor(owner).currentPlatformRenderPipelineSettings;
            FrameSettings          defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
            var area = OverridableFrameSettingsArea.GetGroupContent(0, defaultFrameSettings, serialized);

            LitShaderMode defaultShaderLitMode;

            switch (hdrpSettings.supportedLitShaderMode)
            {
            case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
                defaultShaderLitMode = LitShaderMode.Forward;
                break;

            case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
                defaultShaderLitMode = LitShaderMode.Deferred;
                break;

            case RenderPipelineSettings.SupportedLitShaderMode.Both:
                defaultShaderLitMode = defaultFrameSettings.litShaderMode;
                break;

            default:
                throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
            }

            area.AmmendInfo(FrameSettingsField.LitShaderMode,
                            overrideable: () => !GL.wireframe && hdrpSettings.supportedLitShaderMode == RenderPipelineSettings.SupportedLitShaderMode.Both,
                            overridedDefaultValue: defaultShaderLitMode);

            bool hdrpAssetSupportForward         = hdrpSettings.supportedLitShaderMode != RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly;
            bool hdrpAssetSupportDeferred        = hdrpSettings.supportedLitShaderMode != RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly;
            bool frameSettingsOverrideToForward  = serialized.GetOverrides(FrameSettingsField.LitShaderMode) && serialized.litShaderMode == LitShaderMode.Forward;
            bool frameSettingsOverrideToDeferred = serialized.GetOverrides(FrameSettingsField.LitShaderMode) && serialized.litShaderMode == LitShaderMode.Deferred;
            bool defaultForwardUsed    = !serialized.GetOverrides(FrameSettingsField.LitShaderMode) && defaultShaderLitMode == LitShaderMode.Forward;
            bool defaultDefferedUsed   = !serialized.GetOverrides(FrameSettingsField.LitShaderMode) && defaultShaderLitMode == LitShaderMode.Deferred;
            bool msaaEnablable         = !GL.wireframe && hdrpAssetSupportForward && hdrpSettings.supportMSAA && (frameSettingsOverrideToForward || defaultForwardUsed);
            bool depthPrepassEnablable = hdrpAssetSupportDeferred && (defaultDefferedUsed || frameSettingsOverrideToDeferred);

            area.AmmendInfo(FrameSettingsField.MSAA,
                            overrideable: () => msaaEnablable,
                            overridedDefaultValue: msaaEnablable && defaultFrameSettings.IsEnabled(FrameSettingsField.MSAA),
                            customOverrideable: () =>
            {
                switch (hdrpSettings.supportedLitShaderMode)
                {
                case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
                    return(false);        //negative dependency

                case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
                    return(true);        //negative dependency

                case RenderPipelineSettings.SupportedLitShaderMode.Both:
                    return(!(frameSettingsOverrideToForward || defaultForwardUsed));        //negative dependency

                default:
                    throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
                }
            });
            area.AmmendInfo(FrameSettingsField.DepthPrepassWithDeferredRendering,
                            overrideable: () => depthPrepassEnablable,
                            overridedDefaultValue: depthPrepassEnablable && defaultFrameSettings.IsEnabled(FrameSettingsField.DepthPrepassWithDeferredRendering),
                            customOverrideable: () =>
            {
                switch (hdrpSettings.supportedLitShaderMode)
                {
                case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
                    return(false);

                case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
                    return(true);

                case RenderPipelineSettings.SupportedLitShaderMode.Both:
                    return(frameSettingsOverrideToDeferred || defaultDefferedUsed);

                default:
                    throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
                }
            });

            area.AmmendInfo(FrameSettingsField.MotionVectors, overrideable: () => hdrpSettings.supportMotionVectors);
            area.AmmendInfo(FrameSettingsField.ObjectMotionVectors, overrideable: () => hdrpSettings.supportMotionVectors);
            area.AmmendInfo(FrameSettingsField.Decals, overrideable: () => hdrpSettings.supportDecals);
            area.AmmendInfo(FrameSettingsField.Distortion, overrideable: () => hdrpSettings.supportDistortion);
            area.Draw(withOverride);
        }
 public override void LoadSettingsFromQualityPreset(RenderPipelineSettings settings, int level)
 {
     CopySetting(ref m_MaxSamples, settings.postProcessQualitySettings.ChromaticAberrationMaxSamples[level]);
 }
Example #25
0
 public override void LoadSettingsFromQualityPreset(RenderPipelineSettings settings, int level)
 {
     CopySetting(ref m_SampleCount, settings.lightingQualitySettings.ContactShadowSampleCount[level]);
 }
Example #26
0
        static internal void Drawer_SectionRenderingSettings(SerializedFrameSettings serialized, Editor owner, bool withOverride)
        {
            bool isGUIenabled = GUI.enabled;

            FrameSettings?defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
            var           area = OverridableFrameSettingsArea.GetGroupContent(0, defaultFrameSettings, serialized);

            area.AmmendInfo(FrameSettingsField.DepthPrepassWithDeferredRendering, ignoreDependencies: true);
            area.AmmendInfo(FrameSettingsField.ClearGBuffers, ignoreDependencies: true);

            area.AmmendInfo(FrameSettingsField.MSAAMode, ignoreDependencies: true);
            area.AmmendInfo(
                FrameSettingsField.MSAAMode,
                overridedDefaultValue: defaultFrameSettings?.msaaMode ?? MSAAMode.FromHDRPAsset,
                customGetter: () => serialized.msaaMode.GetEnumValue <MSAAMode>(),
                customSetter: v => serialized.msaaMode.SetEnumValue((MSAAMode)v),
                hasMixedValues: serialized.msaaMode.hasMultipleDifferentValues
                );

            area.AmmendInfo(FrameSettingsField.DecalLayers, ignoreDependencies: true);
            area.AmmendInfo(FrameSettingsField.ObjectMotionVectors, ignoreDependencies: true);
            area.AmmendInfo(FrameSettingsField.TransparentsWriteMotionVector, ignoreDependencies: true);

            var hdrpAsset = GetHDRPAssetFor(owner);
            RenderPipelineSettings qualityLevelSettings = hdrpAsset?.currentPlatformRenderPipelineSettings ?? default;

            area.AmmendInfo(
                FrameSettingsField.LODBiasMode,
                overridedDefaultValue: LODBiasMode.FromQualitySettings,
                customGetter: () => serialized.lodBiasMode.GetEnumValue <LODBiasMode>(),
                customSetter: v => serialized.lodBiasMode.SetEnumValue((LODBiasMode)v),
                hasMixedValues: serialized.lodBiasMode.hasMultipleDifferentValues
                );
            area.AmmendInfo(FrameSettingsField.LODBiasQualityLevel,
                            overridedDefaultValue: ScalableLevel3ForFrameSettingsUIOnly.Low,
                            customGetter: () => (ScalableLevel3ForFrameSettingsUIOnly)serialized.lodBiasQualityLevel.intValue,
                            customSetter: v => serialized.lodBiasQualityLevel.intValue = (int)v,
                            overrideable: () => serialized.lodBiasMode.GetEnumValue <LODBiasMode>() != LODBiasMode.OverrideQualitySettings,
                            ignoreDependencies: true,
                            hasMixedValues: serialized.lodBiasQualityLevel.hasMultipleDifferentValues);

            area.AmmendInfo(FrameSettingsField.LODBias,
                            overridedDefaultValue: hdrpAsset ? qualityLevelSettings.lodBias[serialized.lodBiasQualityLevel.intValue] : 0,
                            customGetter: () => serialized.lodBias.floatValue,
                            customSetter: v => serialized.lodBias.floatValue = (float)v,
                            overrideable: () => serialized.lodBiasMode.GetEnumValue <LODBiasMode>() != LODBiasMode.FromQualitySettings,
                            ignoreDependencies: true,
                            labelOverride: serialized.lodBiasMode.GetEnumValue <LODBiasMode>() == LODBiasMode.ScaleQualitySettings ? "Scale Factor" : "LOD Bias",
                            hasMixedValues: serialized.lodBias.hasMultipleDifferentValues);

            area.AmmendInfo(
                FrameSettingsField.MaximumLODLevelMode,
                overridedDefaultValue: MaximumLODLevelMode.FromQualitySettings,
                customGetter: () => serialized.maximumLODLevelMode.GetEnumValue <MaximumLODLevelMode>(),
                customSetter: v => serialized.maximumLODLevelMode.SetEnumValue((MaximumLODLevelMode)v),
                hasMixedValues: serialized.maximumLODLevelMode.hasMultipleDifferentValues
                );
            area.AmmendInfo(FrameSettingsField.MaximumLODLevelQualityLevel,
                            overridedDefaultValue: ScalableLevel3ForFrameSettingsUIOnly.Low,
                            customGetter: () => (ScalableLevel3ForFrameSettingsUIOnly)serialized.maximumLODLevelQualityLevel.intValue,
                            customSetter: v => serialized.maximumLODLevelQualityLevel.intValue = (int)v,
                            overrideable: () => serialized.maximumLODLevelMode.GetEnumValue <MaximumLODLevelMode>() != MaximumLODLevelMode.OverrideQualitySettings,
                            ignoreDependencies: true,
                            hasMixedValues: serialized.maximumLODLevelQualityLevel.hasMultipleDifferentValues);

            area.AmmendInfo(FrameSettingsField.MaximumLODLevel,
                            overridedDefaultValue: hdrpAsset ? qualityLevelSettings.maximumLODLevel[serialized.maximumLODLevelQualityLevel.intValue] : 0,
                            customGetter: () => serialized.maximumLODLevel.intValue,
                            customSetter: v => serialized.maximumLODLevel.intValue = (int)v,
                            overrideable: () => serialized.maximumLODLevelMode.GetEnumValue <MaximumLODLevelMode>() != MaximumLODLevelMode.FromQualitySettings,
                            ignoreDependencies: true,
                            labelOverride: serialized.maximumLODLevelMode.GetEnumValue <MaximumLODLevelMode>() == MaximumLODLevelMode.OffsetQualitySettings ? "Offset Factor" : "Maximum LOD Level",
                            hasMixedValues: serialized.maximumLODLevel.hasMultipleDifferentValues);

            area.AmmendInfo(FrameSettingsField.MaterialQualityLevel,
                            overridedDefaultValue: defaultFrameSettings?.materialQuality.Into() ?? MaterialQualityMode.Medium,
                            customGetter: () => ((MaterialQuality)serialized.materialQuality.intValue).Into(),
                            customSetter: v => serialized.materialQuality.intValue = (int)((MaterialQualityMode)v).Into(),
                            hasMixedValues: serialized.materialQuality.hasMultipleDifferentValues
                            );

            area.Draw(withOverride);
            GUI.enabled = isGUIenabled;
        }
        static void Drawer_SectionRenderingSettings(SerializedFrameSettings serialized, Editor owner, bool withOverride)
        {
            RenderPipelineSettings hdrpSettings         = GetHDRPAssetFor(owner).currentPlatformRenderPipelineSettings;
            FrameSettings          defaultFrameSettings = GetDefaultFrameSettingsFor(owner);
            var area = OverridableFrameSettingsArea.GetGroupContent(0, defaultFrameSettings, serialized);

            var frameSettingType = owner is IDefaultFrameSettingsType getType?getType.GetFrameSettingsType() : FrameSettingsRenderType.Camera;

            LitShaderMode defaultShaderLitMode;

            switch (hdrpSettings.supportedLitShaderMode)
            {
            case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
                defaultShaderLitMode = LitShaderMode.Forward;
                break;

            case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
                defaultShaderLitMode = LitShaderMode.Deferred;
                break;

            case RenderPipelineSettings.SupportedLitShaderMode.Both:
                defaultShaderLitMode = defaultFrameSettings.litShaderMode;
                break;

            default:
                throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
            }

            area.AmmendInfo(FrameSettingsField.LitShaderMode,
                            overrideable: () => hdrpSettings.supportedLitShaderMode == RenderPipelineSettings.SupportedLitShaderMode.Both,
                            overridedDefaultValue: defaultShaderLitMode);

            bool hdrpAssetSupportForward  = hdrpSettings.supportedLitShaderMode != RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly;
            bool hdrpAssetSupportDeferred = hdrpSettings.supportedLitShaderMode != RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly;
            bool hdrpAssetIsForward       = hdrpSettings.supportedLitShaderMode == RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly;
            bool hdrpAssetIsDeferred      = hdrpSettings.supportedLitShaderMode == RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly;

            bool frameSettingsOverrideToForward  = serialized.GetOverrides(FrameSettingsField.LitShaderMode) && serialized.litShaderMode == LitShaderMode.Forward;
            bool frameSettingsOverrideToDeferred = serialized.GetOverrides(FrameSettingsField.LitShaderMode) && serialized.litShaderMode == LitShaderMode.Deferred;
            bool defaultForwardUsed = !serialized.GetOverrides(FrameSettingsField.LitShaderMode) && defaultShaderLitMode == LitShaderMode.Forward;
            // Due to various reasons, MSAA and ray tracing are not compatible, if ray tracing is enabled on the asset. MSAA can not be enabled on the frame settings.
            bool msaaEnablable = hdrpSettings.supportMSAA && ((hdrpAssetSupportForward && (frameSettingsOverrideToForward || defaultForwardUsed)) || hdrpAssetIsForward) && !hdrpSettings.supportRayTracing;

            area.AmmendInfo(FrameSettingsField.MSAA,
                            overrideable: () => msaaEnablable,
                            overridedDefaultValue: msaaEnablable && defaultFrameSettings.IsEnabled(FrameSettingsField.MSAA),
                            customOverrideable: () =>
            {
                switch (hdrpSettings.supportedLitShaderMode)
                {
                case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
                    return(false);        //negative dependency

                case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
                    return(true);        //negative dependency

                case RenderPipelineSettings.SupportedLitShaderMode.Both:
                    return(!(frameSettingsOverrideToForward || defaultForwardUsed));        //negative dependency

                default:
                    throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
                }
            });

            bool defaultDeferredUsed   = !serialized.GetOverrides(FrameSettingsField.LitShaderMode) && defaultShaderLitMode == LitShaderMode.Deferred;
            bool depthPrepassEnablable = (hdrpAssetSupportDeferred && (defaultDeferredUsed || frameSettingsOverrideToDeferred)) || (hdrpAssetIsDeferred);

            area.AmmendInfo(FrameSettingsField.DepthPrepassWithDeferredRendering,
                            overrideable: () => depthPrepassEnablable,
                            overridedDefaultValue: depthPrepassEnablable && defaultFrameSettings.IsEnabled(FrameSettingsField.DepthPrepassWithDeferredRendering),
                            customOverrideable: () =>
            {
                switch (hdrpSettings.supportedLitShaderMode)
                {
                case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
                    return(false);

                case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
                    return(true);

                case RenderPipelineSettings.SupportedLitShaderMode.Both:
                    return(frameSettingsOverrideToDeferred || defaultDeferredUsed);

                default:
                    throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
                }
            });

            bool clearGBufferEnablable = (hdrpAssetSupportDeferred && (defaultDeferredUsed || frameSettingsOverrideToDeferred)) || (hdrpAssetIsDeferred);

            area.AmmendInfo(FrameSettingsField.ClearGBuffers,
                            overrideable: () => clearGBufferEnablable,
                            overridedDefaultValue: clearGBufferEnablable && defaultFrameSettings.IsEnabled(FrameSettingsField.ClearGBuffers),
                            customOverrideable: () =>
            {
                switch (hdrpSettings.supportedLitShaderMode)
                {
                case RenderPipelineSettings.SupportedLitShaderMode.ForwardOnly:
                    return(false);

                case RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly:
                    return(true);

                case RenderPipelineSettings.SupportedLitShaderMode.Both:
                    return(frameSettingsOverrideToDeferred || defaultDeferredUsed);

                default:
                    throw new System.ArgumentOutOfRangeException("Unknown ShaderLitMode");
                }
            });

            area.AmmendInfo(FrameSettingsField.RayTracing, overrideable: () => hdrpSettings.supportRayTracing);
#if !ENABLE_VIRTUALTEXTURES
            area.AmmendInfo(FrameSettingsField.VirtualTexturing, overrideable: () => false);
#endif
            area.AmmendInfo(FrameSettingsField.MotionVectors, overrideable: () => hdrpSettings.supportMotionVectors);
            area.AmmendInfo(FrameSettingsField.ObjectMotionVectors, overrideable: () => hdrpSettings.supportMotionVectors);
            area.AmmendInfo(FrameSettingsField.TransparentsWriteMotionVector, overrideable: () => hdrpSettings.supportMotionVectors);
            area.AmmendInfo(FrameSettingsField.Decals, overrideable: () => hdrpSettings.supportDecals);
            area.AmmendInfo(FrameSettingsField.DecalLayers, overrideable: () => hdrpSettings.supportDecalLayers);
            area.AmmendInfo(FrameSettingsField.Distortion, overrideable: () => hdrpSettings.supportDistortion);

            area.AmmendInfo(FrameSettingsField.Postprocess, overrideable: () => (frameSettingType != FrameSettingsRenderType.CustomOrBakedReflection &&
                                                                                 frameSettingType != FrameSettingsRenderType.RealtimeReflection));

            area.AmmendInfo(
                FrameSettingsField.LODBiasMode,
                overridedDefaultValue: LODBiasMode.FromQualitySettings,
                customGetter: () => serialized.lodBiasMode.GetEnumValue <LODBiasMode>(),
                customSetter: v => serialized.lodBiasMode.SetEnumValue((LODBiasMode)v),
                hasMixedValues: serialized.lodBiasMode.hasMultipleDifferentValues
                );
            area.AmmendInfo(FrameSettingsField.LODBiasQualityLevel,
                            overridedDefaultValue: ScalableLevel3ForFrameSettingsUIOnly.Low,
                            customGetter: () => (ScalableLevel3ForFrameSettingsUIOnly)serialized.lodBiasQualityLevel.intValue,
                            customSetter: v => serialized.lodBiasQualityLevel.intValue = (int)v,
                            customOverrideable: () => serialized.lodBiasMode.GetEnumValue <LODBiasMode>() != LODBiasMode.OverrideQualitySettings,
                            hasMixedValues: serialized.lodBiasQualityLevel.hasMultipleDifferentValues);

            area.AmmendInfo(FrameSettingsField.LODBias,
                            overridedDefaultValue: QualitySettings.lodBias,
                            customGetter: () => serialized.lodBias.floatValue,
                            customSetter: v => serialized.lodBias.floatValue = (float)v,
                            customOverrideable: () => serialized.lodBiasMode.GetEnumValue <LODBiasMode>() != LODBiasMode.FromQualitySettings,
                            labelOverride: serialized.lodBiasMode.GetEnumValue <LODBiasMode>() == LODBiasMode.ScaleQualitySettings ? "Scale Factor" : "LOD Bias",
                            hasMixedValues: serialized.lodBias.hasMultipleDifferentValues);

            area.AmmendInfo(
                FrameSettingsField.MaximumLODLevelMode,
                overridedDefaultValue: MaximumLODLevelMode.FromQualitySettings,
                customGetter: () => serialized.maximumLODLevelMode.GetEnumValue <MaximumLODLevelMode>(),
                customSetter: v => serialized.maximumLODLevelMode.SetEnumValue((MaximumLODLevelMode)v),
                hasMixedValues: serialized.maximumLODLevelMode.hasMultipleDifferentValues
                );
            area.AmmendInfo(FrameSettingsField.MaximumLODLevelQualityLevel,
                            overridedDefaultValue: ScalableLevel3ForFrameSettingsUIOnly.Low,
                            customGetter: () => (ScalableLevel3ForFrameSettingsUIOnly)serialized.maximumLODLevelQualityLevel.intValue,
                            customSetter: v => serialized.maximumLODLevelQualityLevel.intValue = (int)v,
                            customOverrideable: () => serialized.maximumLODLevelMode.GetEnumValue <MaximumLODLevelMode>() != MaximumLODLevelMode.OverrideQualitySettings,
                            hasMixedValues: serialized.maximumLODLevelQualityLevel.hasMultipleDifferentValues);

            area.AmmendInfo(FrameSettingsField.MaximumLODLevel,
                            overridedDefaultValue: QualitySettings.maximumLODLevel,
                            customGetter: () => serialized.maximumLODLevel.intValue,
                            customSetter: v => serialized.maximumLODLevel.intValue = (int)v,
                            customOverrideable: () => serialized.maximumLODLevelMode.GetEnumValue <MaximumLODLevelMode>() != MaximumLODLevelMode.FromQualitySettings,
                            labelOverride: serialized.maximumLODLevelMode.GetEnumValue <MaximumLODLevelMode>() == MaximumLODLevelMode.OffsetQualitySettings ? "Offset Factor" : "Maximum LOD Level",
                            hasMixedValues: serialized.maximumLODLevel.hasMultipleDifferentValues);

            area.AmmendInfo(FrameSettingsField.MaterialQualityLevel,
                            overridedDefaultValue: defaultFrameSettings.materialQuality.Into(),
                            customGetter: () => ((MaterialQuality)serialized.materialQuality.intValue).Into(),
                            customSetter: v => serialized.materialQuality.intValue = (int)((MaterialQualityMode)v).Into(),
                            hasMixedValues: serialized.materialQuality.hasMultipleDifferentValues
                            );

            area.Draw(withOverride);
        }
Example #28
0
 public override void LoadSettingsFromQualityPreset(RenderPipelineSettings settings, int level)
 {
     CopySetting(ref m_Resolution, (int)settings.postProcessQualitySettings.BloomRes[level]);
     CopySetting(ref m_HighQualityPrefiltering, settings.postProcessQualitySettings.BloomHighQualityPrefiltering[level]);
     CopySetting(ref m_HighQualityFiltering, settings.postProcessQualitySettings.BloomHighQualityFiltering[level]);
 }