mirror of
https://github.com/Lime3DS/Lime3DS.git
synced 2025-12-16 12:08:49 +00:00
change secondary display render setting from a boolean to a choice - off, primary only, secondary only, both
This commit is contained in:
parent
a84f96edd4
commit
a323d8954d
@ -28,7 +28,6 @@ enum class BooleanSetting(
|
||||
PERF_OVERLAY_SHOW_AVAILABLE_RAM("performance_overlay_show_available_ram", Settings.SECTION_LAYOUT, false),
|
||||
PERF_OVERLAY_SHOW_BATTERY_TEMP("performance_overlay_show_battery_temp", Settings.SECTION_LAYOUT, false),
|
||||
PERF_OVERLAY_BACKGROUND("performance_overlay_background", Settings.SECTION_LAYOUT, false),
|
||||
RENDER_3D_SECONDARY_ONLY("render_3d_secondary_only",Settings.SECTION_RENDERER,false),
|
||||
DELAY_START_LLE_MODULES("delay_start_for_lle_modules", Settings.SECTION_DEBUG, true),
|
||||
DETERMINISTIC_ASYNC_OPERATIONS("deterministic_async_operations", Settings.SECTION_DEBUG, false),
|
||||
REQUIRED_ONLINE_LLE_MODULES("enable_required_online_lle_modules", Settings.SECTION_SYSTEM, false),
|
||||
|
||||
@ -17,7 +17,7 @@ enum class IntSetting(
|
||||
CAMERA_OUTER_RIGHT_FLIP("camera_outer_right_flip", Settings.SECTION_CAMERA, 0),
|
||||
GRAPHICS_API("graphics_api", Settings.SECTION_RENDERER, 1),
|
||||
RESOLUTION_FACTOR("resolution_factor", Settings.SECTION_RENDERER, 1),
|
||||
STEREOSCOPIC_3D_MODE("render_3d", Settings.SECTION_RENDERER, 0),
|
||||
STEREOSCOPIC_3D_MODE("render_3d", Settings.SECTION_RENDERER, 1),
|
||||
STEREOSCOPIC_3D_DEPTH("factor_3d", Settings.SECTION_RENDERER, 0),
|
||||
STEPS_PER_HOUR("steps_per_hour", Settings.SECTION_SYSTEM, 0),
|
||||
CARDBOARD_SCREEN_SIZE("cardboard_screen_size", Settings.SECTION_LAYOUT, 85),
|
||||
@ -53,6 +53,7 @@ enum class IntSetting(
|
||||
ORIENTATION_OPTION("screen_orientation", Settings.SECTION_LAYOUT, 2),
|
||||
TURBO_LIMIT("turbo_limit", Settings.SECTION_CORE, 200),
|
||||
PERFORMANCE_OVERLAY_POSITION("performance_overlay_position", Settings.SECTION_LAYOUT, 0),
|
||||
RENDER_3D_WHICH_DISPLAY("render_3d_which_display",Settings.SECTION_RENDERER,0),
|
||||
ASPECT_RATIO("aspect_ratio", Settings.SECTION_LAYOUT, 0);
|
||||
|
||||
override var int: Int = defaultValue
|
||||
|
||||
@ -936,6 +936,17 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
|
||||
)
|
||||
|
||||
add(HeaderSetting(R.string.stereoscopy))
|
||||
add(
|
||||
SingleChoiceSetting(
|
||||
IntSetting.RENDER_3D_WHICH_DISPLAY,
|
||||
R.string.render_3d_which_display,
|
||||
R.string.render_3d_which_display_description,
|
||||
R.array.render3dWhichDisplay,
|
||||
R.array.render3dDisplayValues,
|
||||
IntSetting.RENDER_3D_WHICH_DISPLAY.key,
|
||||
IntSetting.RENDER_3D_WHICH_DISPLAY.defaultValue
|
||||
)
|
||||
)
|
||||
add(
|
||||
SingleChoiceSetting(
|
||||
IntSetting.STEREOSCOPIC_3D_MODE,
|
||||
@ -947,15 +958,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
|
||||
IntSetting.STEREOSCOPIC_3D_MODE.defaultValue
|
||||
)
|
||||
)
|
||||
add(
|
||||
SwitchSetting(
|
||||
BooleanSetting.RENDER_3D_SECONDARY_ONLY,
|
||||
R.string.render_3d_secondary_only,
|
||||
R.string.render_3d_secondary_only_description,
|
||||
BooleanSetting.RENDER_3D_SECONDARY_ONLY.key,
|
||||
BooleanSetting.RENDER_3D_SECONDARY_ONLY.defaultValue
|
||||
)
|
||||
)
|
||||
|
||||
add(
|
||||
SliderSetting(
|
||||
IntSetting.STEREOSCOPIC_3D_DEPTH,
|
||||
|
||||
@ -176,7 +176,7 @@ void Config::ReadValues() {
|
||||
ReadSetting("Renderer", Settings::values.delay_game_render_thread_us);
|
||||
ReadSetting("Renderer", Settings::values.disable_right_eye_render);
|
||||
ReadSetting("Renderer", Settings::values.swap_eyes_3d);
|
||||
ReadSetting("Renderer", Settings::values.render_3d_secondary_only);
|
||||
ReadSetting("Renderer", Settings::values.render_3d_which_display);
|
||||
// Layout
|
||||
// Somewhat inelegant solution to ensure layout value is between 0 and 5 on read
|
||||
// since older config files may have other values
|
||||
|
||||
@ -181,9 +181,10 @@ factor_3d =
|
||||
# true or false (default)
|
||||
swap_eyes_3d =
|
||||
|
||||
# Render 3D To Secondary Display
|
||||
# true or false (default)
|
||||
render_3d_secondary_only =
|
||||
# Which Display to render 3d mode to
|
||||
# 0 (default) - None. Equivalent to render_3d=0
|
||||
# 1: Both, 2: Primary Only, 3: Secondary Only
|
||||
render_3d_which_display =
|
||||
|
||||
# The name of the post processing shader to apply.
|
||||
# Loaded from shaders if render_3d is off or side by side.
|
||||
|
||||
@ -238,7 +238,6 @@
|
||||
</integer-array>
|
||||
|
||||
<string-array name="render3dModes">
|
||||
<item>@string/off</item>
|
||||
<item>@string/side_by_side</item>
|
||||
<item>@string/side_by_side_full</item>
|
||||
<item>@string/anaglyph</item>
|
||||
@ -248,13 +247,26 @@
|
||||
</string-array>
|
||||
|
||||
<integer-array name="render3dValues">
|
||||
<item>1</item>
|
||||
<item>2</item>
|
||||
<item>4</item>
|
||||
<item>5</item>
|
||||
<item>6</item>
|
||||
<item>7</item>
|
||||
</integer-array>
|
||||
|
||||
<string-array name="render3dWhichDisplay">
|
||||
<item>@string/off</item>
|
||||
<item>@string/render_3d_which_display_both</item>
|
||||
<item>@string/render_3d_which_display_primary</item>
|
||||
<item>@string/render_3d_which_display_secondary</item>
|
||||
</string-array>
|
||||
|
||||
<integer-array name="render3dDisplayValues">
|
||||
<item>0</item>
|
||||
<item>1</item>
|
||||
<item>2</item>
|
||||
<item>3</item>
|
||||
<item>4</item>
|
||||
<item>5</item>
|
||||
<item>6</item>
|
||||
</integer-array>
|
||||
|
||||
<string-array name="graphicsApiNames">
|
||||
|
||||
@ -280,14 +280,18 @@
|
||||
<string name="debug_warning">Warning: Modifying these settings will slow emulation</string>
|
||||
<string name="stereoscopy">Stereoscopy</string>
|
||||
<string name="render3d">Stereoscopic 3D Mode</string>
|
||||
<string name="render3dDescription">If any display is rendered to, choose your mode. Side by Side modes are most common in modern use.</string>
|
||||
<string name="factor3d">Depth</string>
|
||||
<string name="factor3d_description">Specifies the value of the 3D slider. This should be set to higher than 0% when Stereoscopic 3D is enabled.\nNote: Depth values over 100% are not possible on real hardware and may cause graphical issues</string>
|
||||
<string name="disable_right_eye_render">Disable Right Eye Render</string>
|
||||
<string name="disable_right_eye_render_description">Greatly improves performance in some applications, but can cause flickering in others.</string>
|
||||
<string name="swap_eyes_3d">Swap Eyes</string>
|
||||
<string name="swap_eyes_3d_description">Swaps which eye is shown where. Combine with Side by Side mode and cross your eyes to see 3D with no equipment!</string>
|
||||
<string name="render_3d_secondary_only">3D on Secondary Display Only</string>
|
||||
<string name="render_3d_secondary_only_description">If enabled, the selected 3d mode will only be applied on the secondary display (if enabled in the Layout menu). Applies to SBS modes only. </string>
|
||||
<string name="render_3d_which_display">Render Stereoscopic 3D</string>
|
||||
<string name="render_3d_which_display_description">Determine whether to render stereoscopic 3D, and on which display or displays. Anaglyph and Interlaced modes will always apply to either both displays or neither.</string>
|
||||
<string name="render_3d_which_display_both">On All Displays</string>
|
||||
<string name="render_3d_which_display_primary">On Primary Display Only</string>
|
||||
<string name="render_3d_which_display_secondary">On Secondary Display Only</string>
|
||||
<string name="cardboard_vr">Cardboard VR</string>
|
||||
<string name="cardboard_screen_size">Cardboard Screen Size</string>
|
||||
<string name="cardboard_screen_size_description">Scales the screen to a percentage of its original size.</string>
|
||||
|
||||
@ -109,8 +109,8 @@ void LogSettings() {
|
||||
log_setting("Stereoscopy_Render3d", values.render_3d.GetValue());
|
||||
log_setting("Stereoscopy_Factor3d", values.factor_3d.GetValue());
|
||||
log_setting("Stereoscopy_Swap_Eyes", values.swap_eyes_3d.GetValue());
|
||||
log_setting("Stereoscopy_Render_3d_to_secondary_only",
|
||||
values.render_3d_secondary_only.GetValue());
|
||||
log_setting("Stereoscopy_Render_3d_to_which_display",
|
||||
values.render_3d_which_display.GetValue());
|
||||
log_setting("Stereoscopy_MonoRenderOption", values.mono_render_option.GetValue());
|
||||
if (values.render_3d.GetValue() == StereoRenderOption::Anaglyph) {
|
||||
log_setting("Renderer_AnaglyphShader", values.anaglyph_shader_name.GetValue());
|
||||
@ -222,7 +222,6 @@ void RestoreGlobalState(bool is_powered_on) {
|
||||
values.bg_blue.SetGlobal(true);
|
||||
values.render_3d.SetGlobal(true);
|
||||
values.swap_eyes_3d.SetGlobal(true);
|
||||
values.render_3d_secondary_only.SetGlobal(true);
|
||||
values.factor_3d.SetGlobal(true);
|
||||
values.filter_mode.SetGlobal(true);
|
||||
values.pp_shader_name.SetGlobal(true);
|
||||
|
||||
@ -86,6 +86,14 @@ enum class MonoRenderOption : u32 {
|
||||
RightEye = 1,
|
||||
};
|
||||
|
||||
// on android, which displays to render stereo mode to
|
||||
enum class StereoWhichDisplay: u32 {
|
||||
None = 0, //equivalent to StereoRenderOption = Off
|
||||
Both = 1,
|
||||
PrimaryOnly = 2,
|
||||
SecondaryOnly = 3
|
||||
};
|
||||
|
||||
enum class AudioEmulation : u32 {
|
||||
HLE = 0,
|
||||
LLE = 1,
|
||||
@ -562,7 +570,8 @@ struct Values {
|
||||
SwitchableSetting<StereoRenderOption> render_3d{StereoRenderOption::Off, "render_3d"};
|
||||
SwitchableSetting<u32> factor_3d{0, "factor_3d"};
|
||||
SwitchableSetting<bool> swap_eyes_3d{false, "swap_eyes_3d"};
|
||||
SwitchableSetting<bool> render_3d_secondary_only{false, "render_3d_secondary_only"};
|
||||
|
||||
SwitchableSetting<StereoWhichDisplay> render_3d_which_display{StereoWhichDisplay::None, "render_3d_which_display"};
|
||||
SwitchableSetting<MonoRenderOption> mono_render_option{MonoRenderOption::LeftEye,
|
||||
"mono_render_option"};
|
||||
|
||||
|
||||
@ -65,9 +65,11 @@ Settings::StereoRenderOption EmuWindow::get3DMode() const {
|
||||
render_3d_mode = Settings::StereoRenderOption::Off;
|
||||
}
|
||||
#else
|
||||
// on mobile, if this is the primary screen and render_3d is set to secondary only
|
||||
// then no stereo
|
||||
if (!is_secondary && Settings::values.render_3d_secondary_only) {
|
||||
// adjust the StereoRenderOption setting to Off if appropriate on mobile
|
||||
Settings::StereoWhichDisplay whichDisplay = Settings::values.render_3d_which_display.GetValue();
|
||||
if (whichDisplay == Settings::StereoWhichDisplay::None ||
|
||||
whichDisplay == Settings::StereoWhichDisplay::PrimaryOnly && is_secondary ||
|
||||
whichDisplay == Settings::StereoWhichDisplay::SecondaryOnly && !is_secondary) {
|
||||
render_3d_mode = Settings::StereoRenderOption::Off;
|
||||
}
|
||||
#endif
|
||||
|
||||
Loading…
Reference in New Issue
Block a user