예제 #1
0
        internal void SetToMediumQuality()
        {
            MyPerformanceSettings settings3 = new MyPerformanceSettings();
            MyRenderSettings1     settings4 = new MyRenderSettings1 {
                AnisotropicFiltering    = MyTextureAnisoFiltering.NONE,
                AntialiasingMode        = MyAntialiasingMode.FXAA,
                ShadowQuality           = MyShadowsQuality.MEDIUM,
                AmbientOcclusionEnabled = true,
                TextureQuality          = MyTextureQuality.MEDIUM,
                ModelQuality            = MyRenderQualityEnum.NORMAL,
                VoxelQuality            = MyRenderQualityEnum.NORMAL,
                GrassDrawDistance       = 160f,
                GrassDensityFactor      = 1f,
                HqDepth                  = true,
                VoxelShaderQuality       = MyRenderQualityEnum.NORMAL,
                AlphaMaskedShaderQuality = MyRenderQualityEnum.NORMAL,
                AtmosphereShaderQuality  = MyRenderQualityEnum.NORMAL,
                DistanceFade             = 100f
            };

            settings3.RenderSettings      = settings4;
            settings3.EnableDamageEffects = true;
            MyGraphicsSettings currentGraphicsSettings = MyVideoSettingsManager.CurrentGraphicsSettings;

            currentGraphicsSettings.PerformanceSettings = settings3;
            MyVideoSettingsManager.Apply(currentGraphicsSettings);
            MyVideoSettingsManager.SaveCurrentSettings();
        }
예제 #2
0
        public static void WriteCurrentSettingsToConfig()
        {
            MySandboxGame.Config.VideoAdapter          = m_currentDeviceSettings.NewAdapterOrdinal;
            MySandboxGame.Config.ScreenWidth           = new int?(m_currentDeviceSettings.BackBufferWidth);
            MySandboxGame.Config.ScreenHeight          = new int?(m_currentDeviceSettings.BackBufferHeight);
            MySandboxGame.Config.RefreshRate           = m_currentDeviceSettings.RefreshRate;
            MySandboxGame.Config.WindowMode            = m_currentDeviceSettings.WindowMode;
            MySandboxGame.Config.VerticalSync          = m_currentDeviceSettings.VSync;
            MySandboxGame.Config.FieldOfView           = m_currentGraphicsSettings.FieldOfView;
            MySandboxGame.Config.PostProcessingEnabled = m_currentGraphicsSettings.PostProcessingEnabled;
            MySandboxGame.Config.FlaresIntensity       = m_currentGraphicsSettings.FlaresIntensity;
            MySandboxGame.Config.GraphicsRenderer      = m_currentGraphicsSettings.GraphicsRenderer;
            MySandboxGame.Config.EnableDamageEffects   = new bool?(m_currentGraphicsSettings.PerformanceSettings.EnableDamageEffects);
            MyRenderSettings1 renderSettings = m_currentGraphicsSettings.PerformanceSettings.RenderSettings;

            MySandboxGame.Config.VegetationDrawDistance  = new float?(renderSettings.DistanceFade);
            MySandboxGame.Config.GrassDensityFactor      = new float?(renderSettings.GrassDensityFactor);
            MySandboxGame.Config.GrassDrawDistance       = new float?(renderSettings.GrassDrawDistance);
            MySandboxGame.Config.AntialiasingMode        = new MyAntialiasingMode?(renderSettings.AntialiasingMode);
            MySandboxGame.Config.ShadowQuality           = new MyShadowsQuality?(renderSettings.ShadowQuality);
            MySandboxGame.Config.AmbientOcclusionEnabled = new bool?(renderSettings.AmbientOcclusionEnabled);
            MySandboxGame.Config.TextureQuality          = new MyTextureQuality?(renderSettings.TextureQuality);
            MySandboxGame.Config.AnisotropicFiltering    = new MyTextureAnisoFiltering?(renderSettings.AnisotropicFiltering);
            MySandboxGame.Config.ModelQuality            = new MyRenderQualityEnum?(renderSettings.ModelQuality);
            MySandboxGame.Config.VoxelQuality            = new MyRenderQualityEnum?(renderSettings.VoxelQuality);
            MySandboxGame.Config.ShaderQuality           = new MyRenderQualityEnum?(renderSettings.VoxelShaderQuality);
            MySandboxGame.Config.LowMemSwitchToLow       = MyConfig.LowMemSwitch.ARMED;
        }
        private void RefreshPresetCombo(MyRenderSettings1 renderSettings)
        {
            int presetIdx;

            for (presetIdx = 0; presetIdx < m_presets.Length; ++presetIdx)
            {
                var preset = m_presets[presetIdx];
                if (preset.AnisotropicFiltering == renderSettings.AnisotropicFiltering &&
                    preset.AntialiasingMode == renderSettings.AntialiasingMode &&
                    preset.FoliageDetails == renderSettings.FoliageDetails &&
                    preset.ShadowQuality == renderSettings.ShadowQuality &&
                    preset.TextureQuality == renderSettings.TextureQuality)
                {
                    break;
                }
            }
            m_comboGraphicsPresets.SelectItemByKey(presetIdx, false);
        }
 private void RefreshPresetCombo(MyRenderSettings1 renderSettings)
 {
     int presetIdx;
     for (presetIdx = 0; presetIdx < m_presets.Length; ++presetIdx)
     {
         var preset = m_presets[presetIdx];
         if (preset.AnisotropicFiltering == renderSettings.AnisotropicFiltering &&
             preset.AntialiasingMode == renderSettings.AntialiasingMode &&
             preset.FoliageDetails == renderSettings.FoliageDetails &&
             preset.ShadowQuality == renderSettings.ShadowQuality &&
             preset.TextureQuality == renderSettings.TextureQuality)
             break;
     }
     m_comboGraphicsPresets.SelectItemByKey(presetIdx, false);
 }
예제 #5
0
 public static void SwitchRenderSettings(MyRenderSettings1 settings)
 {
     var message = MessagePool.Get<MyRenderMessageSwitchRenderSettings>(MyRenderMessageEnum.SwitchRenderSettings);
     message.Settings = settings;
     EnqueueMessage(message);
 }
예제 #6
0
        internal static void UpdateRenderSettings(MyRenderSettings1 settings)
        {
            MyRender11.Log.WriteLine("UpdateRenderSettings");
            MyRender11.Log.IncreaseIndent();

            var prevSettings = m_renderSettings;
            m_renderSettings = settings;

            LogUpdateRenderSettings(ref settings);

            MyRenderProxy.Settings.EnableCameraInterpolation = settings.InterpolationEnabled;
            MyRenderProxy.Settings.EnableObjectInterpolation = settings.InterpolationEnabled;

            MyRenderProxy.Settings.GrassDensityFactor = settings.GrassDensityFactor;

     //       if(settings.GrassDensityFactor != prevSettings.GrassDensityFactor)
     //           MyRenderProxy.ReloadGrass();

            if (settings.ShadowQuality != prevSettings.ShadowQuality)
            {
                MyShadows.ResizeCascades();
            }

            if(settings.AntialiasingMode != prevSettings.AntialiasingMode)
            {
                GlobalShaderHeader = MyShaderHelpers.FormatMacros(MyRender11.ShaderMultisamplingDefine(), MyRender11.FxaaEnabled ? "FXAA_ENABLED" : null);
                MyShaders.Recompile();
                MyMaterialShaders.Recompile();
                MyRenderableComponent.MarkAllDirty();

                if (settings.AntialiasingMode.SamplesCount() != prevSettings.AntialiasingMode.SamplesCount())
                {
                    CreateScreenResources();
                }
            }

            if (settings.AnisotropicFiltering != prevSettings.AnisotropicFiltering)
            {
                UpdateTextureSampler(m_textureSamplerState, TextureAddressMode.Wrap);
                UpdateTextureSampler(m_alphamaskarraySamplerState, TextureAddressMode.Clamp);
            }
            
            if(settings.TextureQuality != prevSettings.TextureQuality)
            {
                //MyTextureManager.UnloadTextures();

                MyVoxelMaterials1.InvalidateMaterials();
                MyMeshMaterials1.InvalidateMaterials();
                MyTextures.ReloadQualityDependantTextures();

                //MyVoxelMaterials.ReloadTextures();
                //MyMaterialProxyFactory.ReloadTextures();
            }

            m_settingsChangedListeners();

            MyRender11.Log.DecreaseIndent();
        }
예제 #7
0
 internal static void LogUpdateRenderSettings(ref MyRenderSettings1 v)
 {
     MyRender11.Log.WriteLine("MyRenderSettings1 = {");
     MyRender11.Log.IncreaseIndent();
     MyRender11.Log.WriteLine("AntialiasingMode = " + v.AntialiasingMode);
     MyRender11.Log.WriteLine("FoliageDetails = " + v.FoliageDetails);
     MyRender11.Log.WriteLine("MultithreadingEnabled = " + v.MultithreadingEnabled);
     MyRender11.Log.WriteLine("TonemappingEnabled = " + v.TonemappingEnabled);
     MyRender11.Log.WriteLine("ShadowQuality = " + v.ShadowQuality);
     MyRender11.Log.WriteLine("TextureQuality = " + v.TextureQuality);
     MyRender11.Log.WriteLine("AnisotropicFiltering = " + v.AnisotropicFiltering);
     MyRender11.Log.WriteLine("InterpolationEnabled = " + v.InterpolationEnabled);
     MyRender11.Log.DecreaseIndent();
     MyRender11.Log.WriteLine("}");
 }
        internal static void UpdateRenderSettings(MyRenderSettings1 settings)
        {
            Log.WriteLine("UpdateRenderSettings");
            Log.IncreaseIndent();

            var prevSettings = m_renderSettings;
            m_renderSettings = settings;

            LogUpdateRenderSettings(ref settings);

            MyRenderConstants.SwitchRenderQuality(settings.Dx9Quality); //because of lod ranges

            MyRenderProxy.Settings.EnableCameraInterpolation = settings.InterpolationEnabled;
            MyRenderProxy.Settings.EnableObjectInterpolation = settings.InterpolationEnabled;

            MyRenderProxy.Settings.GrassDensityFactor = settings.GrassDensityFactor;
            if (settings.GrassDensityFactor == 0.0f) m_renderSettings.FoliageDetails = MyFoliageDetails.DISABLED;
            MyRenderProxy.Settings.VoxelQuality = settings.VoxelQuality;

            //       if(settings.GrassDensityFactor != prevSettings.GrassDensityFactor)
            //           MyRenderProxy.ReloadGrass();

            if (settings.ShadowQuality != prevSettings.ShadowQuality)
            {
                ResetShadows(MyRenderProxy.Settings.ShadowCascadeCount, settings.ShadowQuality.ShadowCascadeResolution());
            }

            if(settings.AntialiasingMode != prevSettings.AntialiasingMode)
            {
                var defineList = new List<ShaderMacro>();
                if (RenderSettings.AntialiasingMode != MyAntialiasingMode.NONE)
                    defineList.Add(ShaderMultisamplingDefine());
                if (DebugMode)
                    defineList.Add(MyShadersDefines.DebugMacro);

                GlobalShaderMacro = defineList.ToArray();

                MyShaders.Recompile();
                MyMaterialShaders.Recompile();
                MyRenderableComponent.MarkAllDirty();

                if (settings.AntialiasingMode.SamplesCount() != prevSettings.AntialiasingMode.SamplesCount())
                {
                    CreateScreenResources();
                }
            }

            if (settings.AnisotropicFiltering != prevSettings.AnisotropicFiltering)
            {
                UpdateTextureSampler(m_textureSamplerState, TextureAddressMode.Wrap);
                UpdateTextureSampler(m_alphamaskarraySamplerState, TextureAddressMode.Clamp);
            }
            
            if(settings.TextureQuality != prevSettings.TextureQuality)
            {
                //MyTextureManager.UnloadTextures();

                MyVoxelMaterials1.InvalidateMaterials();
                MyMeshMaterials1.InvalidateMaterials();
                MyTextures.ReloadQualityDependantTextures();

                //MyVoxelMaterials.ReloadTextures();
                //MyMaterialProxyFactory.ReloadTextures();
            }

            m_settingsChangedListeners();

            Log.DecreaseIndent();
        }
예제 #9
0
        internal static void UpdateRenderSettings(MyRenderSettings1 settings)
        {
            Log.WriteLine("UpdateRenderSettings");
            Log.IncreaseIndent();

            var prevSettings = m_renderSettings;
            m_renderSettings = settings;

            LogUpdateRenderSettings(ref settings);

            MyRenderConstants.SwitchRenderQuality(settings.Dx9Quality); //because of lod ranges

            // THIS IS SHIT! MOVE TO USE JUST ONE STRUCT FOR RENDER SETTINGS!!!!!
            MyRender11.Settings.EnableCameraInterpolation = settings.InterpolationEnabled;
            MyRender11.Settings.EnableObjectInterpolation = settings.InterpolationEnabled;

            MyRender11.Settings.GrassDensityFactor = settings.GrassDensityFactor;
            if (settings.GrassDensityFactor == 0.0f) m_renderSettings.FoliageDetails = MyFoliageDetails.DISABLED;
            MyRender11.Settings.VoxelQuality = settings.VoxelQuality;

            //       if(settings.GrassDensityFactor != prevSettings.GrassDensityFactor)
            //           MyRenderProxy.ReloadGrass();

            if (settings.ShadowQuality != prevSettings.ShadowQuality)
            {
                ResetShadows(MyShadowCascades.Settings.NewData.CascadesCount, settings.ShadowQuality.ShadowCascadeResolution());
            }

            if (settings.AntialiasingMode != prevSettings.AntialiasingMode)
                UpdateAntialiasingMode(settings.AntialiasingMode, prevSettings.AntialiasingMode);

            if (settings.AnisotropicFiltering != prevSettings.AnisotropicFiltering)
            {
                MySamplerStateManager.UpdateFiltering();
            }
            
            if(settings.TextureQuality != prevSettings.TextureQuality)
            {
                MyVoxelMaterials1.InvalidateMaterials();
                MyMeshMaterials1.InvalidateMaterials();
                MyManagers.FileTextures.DisposeTex(MyFileTextureManager.MyFileTextureHelper.IsQualityDependantFilter);
                MyManagers.DynamicFileArrayTextures.ReloadAll();

                //MyVoxelMaterials.ReloadTextures();
                //MyMaterialProxyFactory.ReloadTextures();
            }

            m_settingsChangedListeners();

            Log.DecreaseIndent();
        }
        internal static void UpdateRenderSettings(MyRenderSettings1 settings)
        {
            Log.WriteLine("UpdateRenderSettings");
            Log.IncreaseIndent();

            var prevSettings = m_renderSettings;
            m_renderSettings = settings;

            LogUpdateRenderSettings(ref settings);

            MyRenderConstants.SwitchRenderQuality(settings.Dx9Quality); //because of lod ranges

            MyRenderProxy.Settings.EnableCameraInterpolation = settings.InterpolationEnabled;
            MyRenderProxy.Settings.EnableObjectInterpolation = settings.InterpolationEnabled;

            MyRenderProxy.Settings.GrassDensityFactor = settings.GrassDensityFactor;
            if (settings.GrassDensityFactor == 0.0f) m_renderSettings.FoliageDetails = MyFoliageDetails.DISABLED;
            MyRenderProxy.Settings.VoxelQuality = settings.VoxelQuality;

            //       if(settings.GrassDensityFactor != prevSettings.GrassDensityFactor)
            //           MyRenderProxy.ReloadGrass();

            if (settings.ShadowQuality != prevSettings.ShadowQuality)
            {
                ResetShadows(MyRenderProxy.Settings.ShadowCascadeCount, settings.ShadowQuality.ShadowCascadeResolution());
            }

            if (settings.AntialiasingMode != prevSettings.AntialiasingMode)
                UpdateAntialiasingMode(settings.AntialiasingMode, prevSettings.AntialiasingMode);

            if (settings.AnisotropicFiltering != prevSettings.AnisotropicFiltering)
            {
                SamplerStates.UpdateFiltering();
            }
            
            if(settings.TextureQuality != prevSettings.TextureQuality)
            {
                //MyTextureManager.UnloadTextures();

                MyVoxelMaterials1.InvalidateMaterials();
                MyMeshMaterials1.InvalidateMaterials();
                MyTextures.ReloadQualityDependantTextures();

                //MyVoxelMaterials.ReloadTextures();
                //MyMaterialProxyFactory.ReloadTextures();
            }

            m_settingsChangedListeners();

            Log.DecreaseIndent();
        }