summaryrefslogtreecommitdiffstats
path: root/src/menu.cpp
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-11-04 14:11:40 +0100
committersalmonik <salmonik@tuta.io>2026-11-04 14:11:40 +0100
commit592b865ca5c98d1df2153ea5b77f67aa8a76db60 (patch)
tree4fb957603dba3bc57d316168f074410bdef3e70f /src/menu.cpp
parentGamma: clamp slider to the engine's 2.6 cap, defer readback (diff)
downloadhl2h-592b865ca5c98d1df2153ea5b77f67aa8a76db60.tar.gz
hl2h-592b865ca5c98d1df2153ea5b77f67aa8a76db60.zip
Add HDR tonemap brightness slider
The engine applies mat_monitorgamma (SDL receives changing ramp midpoints), but Wayland/XWayland compositors discard the window gamma ramp, so the gamma slider has no visible effect there. Add an in-engine brightness control that does not depend on the window system: mat_force_tonemap_scale, exposed as "HDR brightness" (x10, 0 = automatic). Drop the temporary SDL gamma ramp diagnostic.
Diffstat (limited to 'src/menu.cpp')
-rw-r--r--src/menu.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/menu.cpp b/src/menu.cpp
index 248aa48..033c0f9 100644
--- a/src/menu.cpp
+++ b/src/menu.cpp
@@ -82,6 +82,7 @@ bool g_edge_jump = false;
82int g_fov_camera = 75; // HL2's stock camera FOV 82int g_fov_camera = 75; // HL2's stock camera FOV
83int g_fov_viewmodel = 54; // HL2's stock viewmodel FOV 83int g_fov_viewmodel = 54; // HL2's stock viewmodel FOV
84int g_gamma = 22; // mat_monitorgamma x10, stock 2.2 84int g_gamma = 22; // mat_monitorgamma x10, stock 2.2
85int g_tonemap = 0; // mat_force_tonemap_scale x10, 0 = automatic
85int g_esp_col_hostile[3] = {255, 60, 60}; 86int g_esp_col_hostile[3] = {255, 60, 60};
86int g_esp_col_neutral[3] = {220, 220, 220}; 87int g_esp_col_neutral[3] = {220, 220, 220};
87int g_esp_col_friendly[3] = {60, 255, 60}; 88int g_esp_col_friendly[3] = {60, 255, 60};
@@ -248,8 +249,8 @@ void config_save() {
248 g_esp_col_neutral[0], g_esp_col_neutral[1], g_esp_col_neutral[2], 249 g_esp_col_neutral[0], g_esp_col_neutral[1], g_esp_col_neutral[2],
249 g_esp_col_friendly[0], g_esp_col_friendly[1], 250 g_esp_col_friendly[0], g_esp_col_friendly[1],
250 g_esp_col_friendly[2]); 251 g_esp_col_friendly[2]);
251 fprintf(f, "[view]\nfov=%d\nvmfov=%d\ngamma=%d\n", g_fov_camera, 252 fprintf(f, "[view]\nfov=%d\nvmfov=%d\ngamma=%d\ntonemap=%d\n",
252 g_fov_viewmodel, g_gamma); 253 g_fov_camera, g_fov_viewmodel, g_gamma, g_tonemap);
253 fprintf(f, "[movement]\ncrouchjump=%d\nedgejump=%d\n", 254 fprintf(f, "[movement]\ncrouchjump=%d\nedgejump=%d\n",
254 (int)g_auto_crouchjump, (int)g_edge_jump); 255 (int)g_auto_crouchjump, (int)g_edge_jump);
255 gui_config_write(f); 256 gui_config_write(f);
@@ -409,6 +410,11 @@ static bool config_load() {
409 lo = 16; 410 lo = 16;
410 hi = 26; // the engine clamps mat_monitorgamma at 2.6 411 hi = 26; // the engine clamps mat_monitorgamma at 2.6
411 stock = 22; 412 stock = 22;
413 } else if (strcmp(key, "tonemap") == 0) {
414 dst = &g_tonemap;
415 lo = 0;
416 hi = 30;
417 stock = 0;
412 } 418 }
413 if (dst) { 419 if (dst) {
414 int v = atoi(val); 420 int v = atoi(val);
@@ -605,6 +611,7 @@ void config_reset_defaults() {
605 g_fov_camera = 75; 611 g_fov_camera = 75;
606 g_fov_viewmodel = 54; 612 g_fov_viewmodel = 54;
607 g_gamma = 22; 613 g_gamma = 22;
614 g_tonemap = 0;
608 g_esp_col_hostile[0] = 255; 615 g_esp_col_hostile[0] = 255;
609 g_esp_col_hostile[1] = 60; 616 g_esp_col_hostile[1] = 60;
610 g_esp_col_hostile[2] = 60; 617 g_esp_col_hostile[2] = 60;