diff --git a/CollapseLauncher/Classes/GameManagement/GameSettings/Zenless/Enums.cs b/CollapseLauncher/Classes/GameManagement/GameSettings/Zenless/Enums.cs index bfe3541f3..4ca33a35b 100644 --- a/CollapseLauncher/Classes/GameManagement/GameSettings/Zenless/Enums.cs +++ b/CollapseLauncher/Classes/GameManagement/GameSettings/Zenless/Enums.cs @@ -151,6 +151,20 @@ public enum AudioPlaybackDevice TV = 3 } +/// <summary> +/// Available options for graphics settings that have 5 options <br/> +/// 1x, 2x, 4x, 8x, 16x +/// Default : 8x [3] +/// </summary> +public enum AnisotropicSamplingOption +{ + x1, + x2, + x4, + x8, + x16 +} + public static class ServerName { public const string Europe = "prod_gf_eu"; diff --git a/CollapseLauncher/Classes/GameManagement/GameSettings/Zenless/FileClass/GeneralData.cs b/CollapseLauncher/Classes/GameManagement/GameSettings/Zenless/FileClass/GeneralData.cs index f2fe59451..b5873c604 100644 --- a/CollapseLauncher/Classes/GameManagement/GameSettings/Zenless/FileClass/GeneralData.cs +++ b/CollapseLauncher/Classes/GameManagement/GameSettings/Zenless/FileClass/GeneralData.cs @@ -499,7 +499,23 @@ public QualityOption2 EnvironmentQuality .GetDataEnum<QualityOption2>(); set => _envQualityData?.SetDataEnum(value); } - + + // Key 16184 Anisotropic Sampling + private SystemSettingLocalData<AnisotropicSamplingOption>? _anisotropicSamplingData; + + /// <summary> + /// Sets the in-game quality settings for Anisotropic Sampling + /// </summary> + /// <see cref="AnisotropicSamplingOption"/> + [JsonIgnore] + public AnisotropicSamplingOption AnisotropicSampling + { + get => (_anisotropicSamplingData ??= SystemSettingDataMap + .AsSystemSettingLocalData("16184", AnisotropicSamplingOption.x8)) + .GetDataEnum<AnisotropicSamplingOption>(); + set => _anisotropicSamplingData?.SetDataEnum(value); + } + // Key 12155 Global Illumination private SystemSettingLocalData<QualityOption3>? _envGlobalIllumination; diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/ZenlessGameSettingsPage.Ext.cs b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/ZenlessGameSettingsPage.Ext.cs index b4972df3f..38bba8dde 100644 --- a/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/ZenlessGameSettingsPage.Ext.cs +++ b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/ZenlessGameSettingsPage.Ext.cs @@ -48,6 +48,7 @@ private void PresetSelector(object sender, SelectionChangedEventArgs _) ShadingQualitySelector.SelectedIndex = (int)QualityOption3.High; CharacterQualitySelector.SelectedIndex = (int)QualityOption2.High; EnvironmentQualitySelector.SelectedIndex = (int)QualityOption2.High; + AnisotropicSamplingSelector.SelectedIndex = (int)AnisotropicSamplingOption.x8; ReflectionQualitySelector.SelectedIndex = (int)QualityOption4.High; VolumetricFogSelector.SelectedIndex = (int)QualityOption4.High; HpcaSelector.SelectedIndex = (int)HiPrecisionCharaAnimOption.Dynamic; @@ -56,38 +57,40 @@ private void PresetSelector(object sender, SelectionChangedEventArgs _) MotionBlurToggle.IsChecked = true; break; case GraphicsPresetOption.Medium: - VSyncToggle.IsChecked = true; - RenderResolutionSelector.SelectedIndex = (int)RenderResOption.f10; - AntiAliasingSelector.SelectedIndex = (int)AntiAliasingOption.TAA; - GlobalIlluminationSelector.SelectedIndex = (int)QualityOption3.High; - ShadowQualitySelector.SelectedIndex = (int)QualityOption3.High; - FxQualitySelector.SelectedIndex = (int)QualityOption5.Medium; - ShadingQualitySelector.SelectedIndex = (int)QualityOption3.High; - CharacterQualitySelector.SelectedIndex = (int)QualityOption2.High; - EnvironmentQualitySelector.SelectedIndex = (int)QualityOption2.High; - ReflectionQualitySelector.SelectedIndex = (int)QualityOption4.Medium; - VolumetricFogSelector.SelectedIndex = (int)QualityOption4.Medium; - HpcaSelector.SelectedIndex = (int)HiPrecisionCharaAnimOption.Off; - BloomToggle.IsChecked = true; - DistortionToggle.IsChecked = true; - MotionBlurToggle.IsChecked = true; + VSyncToggle.IsChecked = true; + RenderResolutionSelector.SelectedIndex = (int)RenderResOption.f10; + AntiAliasingSelector.SelectedIndex = (int)AntiAliasingOption.TAA; + GlobalIlluminationSelector.SelectedIndex = (int)QualityOption3.High; + ShadowQualitySelector.SelectedIndex = (int)QualityOption3.High; + FxQualitySelector.SelectedIndex = (int)QualityOption5.Medium; + ShadingQualitySelector.SelectedIndex = (int)QualityOption3.High; + CharacterQualitySelector.SelectedIndex = (int)QualityOption2.High; + EnvironmentQualitySelector.SelectedIndex = (int)QualityOption2.High; + AnisotropicSamplingSelector.SelectedIndex = (int)AnisotropicSamplingOption.x8; + ReflectionQualitySelector.SelectedIndex = (int)QualityOption4.Medium; + VolumetricFogSelector.SelectedIndex = (int)QualityOption4.Medium; + HpcaSelector.SelectedIndex = (int)HiPrecisionCharaAnimOption.Off; + BloomToggle.IsChecked = true; + DistortionToggle.IsChecked = true; + MotionBlurToggle.IsChecked = true; break; case GraphicsPresetOption.Low: - VSyncToggle.IsChecked = true; - RenderResolutionSelector.SelectedIndex = (int)RenderResOption.f10; - AntiAliasingSelector.SelectedIndex = (int)AntiAliasingOption.TAA; - GlobalIlluminationSelector.SelectedIndex = (int)QualityOption3.Low; - ShadowQualitySelector.SelectedIndex = (int)QualityOption3.Medium; - FxQualitySelector.SelectedIndex = (int)QualityOption5.Low; - ShadingQualitySelector.SelectedIndex = (int)QualityOption3.High; - CharacterQualitySelector.SelectedIndex = (int)QualityOption2.High; - EnvironmentQualitySelector.SelectedIndex = (int)QualityOption2.High; - ReflectionQualitySelector.SelectedIndex = (int)QualityOption4.Low; - VolumetricFogSelector.SelectedIndex = (int)QualityOption4.Low; - HpcaSelector.SelectedIndex = (int)HiPrecisionCharaAnimOption.Off; - BloomToggle.IsChecked = true; - DistortionToggle.IsChecked = true; - MotionBlurToggle.IsChecked = true; + VSyncToggle.IsChecked = true; + RenderResolutionSelector.SelectedIndex = (int)RenderResOption.f10; + AntiAliasingSelector.SelectedIndex = (int)AntiAliasingOption.TAA; + GlobalIlluminationSelector.SelectedIndex = (int)QualityOption3.Low; + ShadowQualitySelector.SelectedIndex = (int)QualityOption3.Medium; + FxQualitySelector.SelectedIndex = (int)QualityOption5.Low; + ShadingQualitySelector.SelectedIndex = (int)QualityOption3.High; + CharacterQualitySelector.SelectedIndex = (int)QualityOption2.High; + EnvironmentQualitySelector.SelectedIndex = (int)QualityOption2.High; + AnisotropicSamplingSelector.SelectedIndex = (int)AnisotropicSamplingOption.x8; + ReflectionQualitySelector.SelectedIndex = (int)QualityOption4.Low; + VolumetricFogSelector.SelectedIndex = (int)QualityOption4.Low; + HpcaSelector.SelectedIndex = (int)HiPrecisionCharaAnimOption.Off; + BloomToggle.IsChecked = true; + DistortionToggle.IsChecked = true; + MotionBlurToggle.IsChecked = true; break; } @@ -562,6 +565,12 @@ public int Graphics_Environment get => (int)Settings.GeneralData.EnvironmentQuality; set => Settings.GeneralData.EnvironmentQuality = (QualityOption2)value; } + + public int Graphics_AnisotropicSampling + { + get => (int)Settings.GeneralData.AnisotropicSampling; + set => Settings.GeneralData.AnisotropicSampling = (AnisotropicSamplingOption)value; + } public int Graphics_GlobalIllumination { diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/ZenlessGameSettingsPage.xaml b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/ZenlessGameSettingsPage.xaml index 8408dc803..ced1e3098 100644 --- a/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/ZenlessGameSettingsPage.xaml +++ b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/ZenlessGameSettingsPage.xaml @@ -462,6 +462,25 @@ <ColumnDefinition /> </Grid.ColumnDefinitions> <StackPanel Grid.Column="0"> + <TextBlock Margin="0,0,8,8" + HorizontalAlignment="Left" + Style="{ThemeResource BodyStrongTextBlockStyle}" + Text="{x:Bind helper:Locale.Lang._ZenlessGameSettingsPage.Graphics_AnisotropicSampling}" + TextWrapping="WrapWholeWords" /> + <ComboBox x:Name="AnisotropicSamplingSelector" + Margin="0,0,16,8" + HorizontalAlignment="Stretch" + CornerRadius="14" + SelectedIndex="{x:Bind Graphics_AnisotropicSampling, Mode=TwoWay}" + SelectionChanged="EnforceCustomPreset_ComboBox"> + <ComboBoxItem Content="1x" /> + <ComboBoxItem Content="2x" /> + <ComboBoxItem Content="4x" /> + <ComboBoxItem Content="8x" /> + <ComboBoxItem Content="16x" /> + </ComboBox> + </StackPanel> + <StackPanel Grid.Column="1"> <TextBlock Margin="0,0,8,8" HorizontalAlignment="Left" Style="{ThemeResource BodyStrongTextBlockStyle}" @@ -479,7 +498,7 @@ <ComboBoxItem Content="{x:Bind helper:Locale.Lang._GameSettingsPage.SpecHigh}" /> </ComboBox> </StackPanel> - <StackPanel Grid.Column="1"> + <StackPanel Grid.Column="2"> <TextBlock Margin="0,0,8,8" HorizontalAlignment="Left" Style="{ThemeResource BodyStrongTextBlockStyle}" diff --git a/Hi3Helper.Core/Lang/Locale/LangZenlessGameSettingsPage.cs b/Hi3Helper.Core/Lang/Locale/LangZenlessGameSettingsPage.cs index d459179b9..5dbf5619d 100644 --- a/Hi3Helper.Core/Lang/Locale/LangZenlessGameSettingsPage.cs +++ b/Hi3Helper.Core/Lang/Locale/LangZenlessGameSettingsPage.cs @@ -30,6 +30,9 @@ public sealed partial class LangZenlessGameSettingsPage public string Graphics_Distortion { get; set; } = LangFallback?._ZenlessGameSettingsPage.Graphics_Distortion; + public string Graphics_AnisotropicSampling { get; set; } = + LangFallback?._GenshinGameSettingsPage.Graphics_AnisotropicFiltering; + public string Graphics_HighPrecisionCharacterAnimation { get; set; } = LangFallback?._ZenlessGameSettingsPage.Graphics_HighPrecisionCharacterAnimation;