Added gamma setting, not hooked up yet

This commit is contained in:
Treeco
2020-02-12 13:55:26 +00:00
parent 30ec2755fe
commit aaf1de9f9b
5 changed files with 50 additions and 2 deletions

View File

@ -44,8 +44,10 @@ void main() {
//hsva_color.z *= 0.85; //hsva_color.z *= 0.85;
//hsva_color.z = 1.0 - 1.0 / (1.0 * hsva_color.z + 1.0); //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 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) { if (medium.x == 1u) {
final_color *= vec4(0.2, 0.2, 0.8, 1.0); final_color *= vec4(0.2, 0.2, 0.8, 1.0);

View File

@ -201,6 +201,7 @@ pub enum Event {
ChangeAudioDevice(String), ChangeAudioDevice(String),
ChangeMaxFPS(u32), ChangeMaxFPS(u32),
ChangeFOV(u16), ChangeFOV(u16),
ChangeGamma(f32),
AdjustWindowSize([u16; 2]), AdjustWindowSize([u16; 2]),
ToggleFullscreen, ToggleFullscreen,
ChangeAaMode(AaMode), ChangeAaMode(AaMode),
@ -1762,6 +1763,9 @@ impl Hud {
settings_window::Event::AdjustFOV(new_fov) => { settings_window::Event::AdjustFOV(new_fov) => {
events.push(Event::ChangeFOV(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) => { settings_window::Event::ChangeAaMode(new_aa_mode) => {
events.push(Event::ChangeAaMode(new_aa_mode)); events.push(Event::ChangeAaMode(new_aa_mode));
}, },

View File

@ -89,6 +89,9 @@ widget_ids! {
fov_slider, fov_slider,
fov_text, fov_text,
fov_value, fov_value,
gamma_slider,
gamma_text,
gamma_value,
aa_mode_text, aa_mode_text,
aa_mode_list, aa_mode_list,
cloud_mode_text, cloud_mode_text,
@ -199,6 +202,7 @@ pub enum Event {
ToggleMouseYInvert(bool), ToggleMouseYInvert(bool),
AdjustViewDistance(u32), AdjustViewDistance(u32),
AdjustFOV(u16), AdjustFOV(u16),
AdjustGamma(f32),
AdjustWindowSize([u16; 2]), AdjustWindowSize([u16; 2]),
ToggleFullscreen, ToggleFullscreen,
ChangeAaMode(AaMode), ChangeAaMode(AaMode),
@ -1554,9 +1558,41 @@ impl<'a> Widget for SettingsWindow<'a> {
.color(TEXT_COLOR) .color(TEXT_COLOR)
.set(state.ids.fov_value, ui); .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 // AaMode
Text::new(&self.localized_strings.get("hud.settings.antialiasing_mode")) 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_size(self.fonts.cyri.scale(14))
.font_id(self.fonts.cyri.conrod_id) .font_id(self.fonts.cyri.conrod_id)
.color(TEXT_COLOR) .color(TEXT_COLOR)

View File

@ -551,6 +551,10 @@ impl PlayState for SessionState {
global_state.settings.save_to_file_warn(); global_state.settings.save_to_file_warn();
self.scene.camera_mut().set_fov_deg(new_fov); 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) => { HudEvent::ChangeAaMode(new_aa_mode) => {
// Do this first so if it crashes the setting isn't saved :) // Do this first so if it crashes the setting isn't saved :)
global_state global_state

View File

@ -191,6 +191,7 @@ pub struct GraphicsSettings {
pub view_distance: u32, pub view_distance: u32,
pub max_fps: u32, pub max_fps: u32,
pub fov: u16, pub fov: u16,
pub gamma: f32,
pub aa_mode: AaMode, pub aa_mode: AaMode,
pub cloud_mode: CloudMode, pub cloud_mode: CloudMode,
pub fluid_mode: FluidMode, pub fluid_mode: FluidMode,
@ -204,6 +205,7 @@ impl Default for GraphicsSettings {
view_distance: 10, view_distance: 10,
max_fps: 60, max_fps: 60,
fov: 50, fov: 50,
gamma: 1.0,
aa_mode: AaMode::Fxaa, aa_mode: AaMode::Fxaa,
cloud_mode: CloudMode::Regular, cloud_mode: CloudMode::Regular,
fluid_mode: FluidMode::Shiny, fluid_mode: FluidMode::Shiny,