From aaf1de9f9bb30dfdaaeedbe2e774e72070b7070f Mon Sep 17 00:00:00 2001 From: Treeco <5021038-Treeco@users.noreply.gitlab.com> Date: Wed, 12 Feb 2020 13:55:26 +0000 Subject: [PATCH] Added gamma setting, not hooked up yet --- assets/voxygen/shaders/postprocess-frag.glsl | 4 ++- voxygen/src/hud/mod.rs | 4 +++ voxygen/src/hud/settings_window.rs | 38 +++++++++++++++++++- voxygen/src/session.rs | 4 +++ voxygen/src/settings.rs | 2 ++ 5 files changed, 50 insertions(+), 2 deletions(-) diff --git a/assets/voxygen/shaders/postprocess-frag.glsl b/assets/voxygen/shaders/postprocess-frag.glsl index 4193bda525..bec1c991ef 100644 --- a/assets/voxygen/shaders/postprocess-frag.glsl +++ b/assets/voxygen/shaders/postprocess-frag.glsl @@ -44,8 +44,10 @@ void main() { //hsva_color.z *= 0.85; //hsva_color.z = 1.0 - 1.0 / (1.0 * hsva_color.z + 1.0); //vec4 final_color = vec4(hsv2rgb(hsva_color.rgb), hsva_color.a); + + vec4 gamma = vec4(1.0); - vec4 final_color = aa_color; + vec4 final_color = pow(aa_color, gamma); if (medium.x == 1u) { final_color *= vec4(0.2, 0.2, 0.8, 1.0); diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index ae2bc278de..023a701d71 100644 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -201,6 +201,7 @@ pub enum Event { ChangeAudioDevice(String), ChangeMaxFPS(u32), ChangeFOV(u16), + ChangeGamma(f32), AdjustWindowSize([u16; 2]), ToggleFullscreen, ChangeAaMode(AaMode), @@ -1762,6 +1763,9 @@ impl Hud { settings_window::Event::AdjustFOV(new_fov) => { events.push(Event::ChangeFOV(new_fov)); }, + settings_window::Event::AdjustGamma(new_gamma) => { + events.push(Event::ChangeGamma(new_gamma)); + }, settings_window::Event::ChangeAaMode(new_aa_mode) => { events.push(Event::ChangeAaMode(new_aa_mode)); }, diff --git a/voxygen/src/hud/settings_window.rs b/voxygen/src/hud/settings_window.rs index 58b71226de..52a4205bab 100644 --- a/voxygen/src/hud/settings_window.rs +++ b/voxygen/src/hud/settings_window.rs @@ -89,6 +89,9 @@ widget_ids! { fov_slider, fov_text, fov_value, + gamma_slider, + gamma_text, + gamma_value, aa_mode_text, aa_mode_list, cloud_mode_text, @@ -199,6 +202,7 @@ pub enum Event { ToggleMouseYInvert(bool), AdjustViewDistance(u32), AdjustFOV(u16), + AdjustGamma(f32), AdjustWindowSize([u16; 2]), ToggleFullscreen, ChangeAaMode(AaMode), @@ -1554,9 +1558,41 @@ impl<'a> Widget for SettingsWindow<'a> { .color(TEXT_COLOR) .set(state.ids.fov_value, ui); + // Gamma + Text::new(&self.localized_strings.get("hud.settings.gamma")) + .down_from(state.ids.fov_slider, 10.0) + .font_size(self.fonts.cyri.scale(14)) + .font_id(self.fonts.cyri.conrod_id) + .color(TEXT_COLOR) + .set(state.ids.gamma_text, ui); + + if let Some(new_val) = ImageSlider::continuous( + self.global_state.settings.graphics.gamma, + 0.5, + 2.0, + self.imgs.slider_indicator, + self.imgs.slider, + ) + .w_h(104.0, 22.0) + .down_from(state.ids.gamma_text, 8.0) + .track_breadth(12.0) + .slider_length(10.0) + .pad_track((5.0, 5.0)) + .set(state.ids.gamma_slider, ui) + { + events.push(Event::AdjustGamma(new_val)); + } + + Text::new(&format!("{}", self.global_state.settings.graphics.gamma)) + .right_from(state.ids.gamma_slider, 8.0) + .font_size(self.fonts.cyri.scale(14)) + .font_id(self.fonts.cyri.conrod_id) + .color(TEXT_COLOR) + .set(state.ids.gamma_value, ui); + // AaMode Text::new(&self.localized_strings.get("hud.settings.antialiasing_mode")) - .down_from(state.ids.fov_slider, 8.0) + .down_from(state.ids.gamma_slider, 8.0) .font_size(self.fonts.cyri.scale(14)) .font_id(self.fonts.cyri.conrod_id) .color(TEXT_COLOR) diff --git a/voxygen/src/session.rs b/voxygen/src/session.rs index 8dfc6595c8..2ed836bdaa 100644 --- a/voxygen/src/session.rs +++ b/voxygen/src/session.rs @@ -551,6 +551,10 @@ impl PlayState for SessionState { global_state.settings.save_to_file_warn(); self.scene.camera_mut().set_fov_deg(new_fov); }, + HudEvent::ChangeGamma(new_gamma) => { + global_state.settings.graphics.gamma = new_gamma; + global_state.settings.save_to_file_warn(); + }, HudEvent::ChangeAaMode(new_aa_mode) => { // Do this first so if it crashes the setting isn't saved :) global_state diff --git a/voxygen/src/settings.rs b/voxygen/src/settings.rs index 9b4f5f6922..8d339f2837 100644 --- a/voxygen/src/settings.rs +++ b/voxygen/src/settings.rs @@ -191,6 +191,7 @@ pub struct GraphicsSettings { pub view_distance: u32, pub max_fps: u32, pub fov: u16, + pub gamma: f32, pub aa_mode: AaMode, pub cloud_mode: CloudMode, pub fluid_mode: FluidMode, @@ -204,6 +205,7 @@ impl Default for GraphicsSettings { view_distance: 10, max_fps: 60, fov: 50, + gamma: 1.0, aa_mode: AaMode::Fxaa, cloud_mode: CloudMode::Regular, fluid_mode: FluidMode::Shiny,