From b75f2944a11af7870b16e88f5fe0f4f456386803 Mon Sep 17 00:00:00 2001 From: Alessandro Toia Date: Wed, 21 Oct 2020 21:39:53 -0700 Subject: [PATCH 1/4] Add struct for gpu color change data --- src/vulkan.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/vulkan.cpp b/src/vulkan.cpp index 3e419673..4e765c23 100644 --- a/src/vulkan.cpp +++ b/src/vulkan.cpp @@ -927,6 +927,17 @@ int change_on_load_temp (int info, int high, int med) { } } + +struct LOAD_DATA { + ImVec4 color_high; + ImVec4 color_med; + ImVec4 color_low; + unsigned high_load; + unsigned med_load; +}; + + + void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2& window_size, bool is_vulkan) { ImGui::GetIO().FontGlobalScale = params.font_scale; @@ -966,6 +977,13 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2& auto text_color = data.colors.text; if (params.enabled[OVERLAY_PARAM_ENABLED_gpu_load_change]){ auto load_color = data.colors.text; + struct LOAD_DATA gpu_data = {data.colors.gpu_load_high, + data.colors.gpu_load_med, + data.colors.gpu_load_low, + params.gpu_load_value[0], + params.gpu_load_value[1] + }; + int gpu_load = change_on_load_temp(gpu_info.load, params.gpu_load_value[0], params.gpu_load_value[1]); // 1 is high, 2 is medium, and 3 is low load/temp switch (gpu_load) { From 0a12632679c567749fc8e4e46fd51acd2cad9c0c Mon Sep 17 00:00:00 2001 From: FlightlessMango Date: Thu, 22 Oct 2020 07:17:14 +0200 Subject: [PATCH 2/4] Gradual color change --- src/overlay.h | 8 ++++++ src/vulkan.cpp | 73 +++++++++++++++++--------------------------------- 2 files changed, 33 insertions(+), 48 deletions(-) diff --git a/src/overlay.h b/src/overlay.h index 80ca85b1..2f3b7d76 100644 --- a/src/overlay.h +++ b/src/overlay.h @@ -81,6 +81,14 @@ struct benchmark_stats { std::vector> percentile_data; }; +struct LOAD_DATA { + ImVec4 color_high; + ImVec4 color_med; + ImVec4 color_low; + unsigned high_load; + unsigned med_load; +}; + extern struct fps_limit fps_limit_stats; extern int32_t deviceID; diff --git a/src/vulkan.cpp b/src/vulkan.cpp index 4e765c23..c8e44b65 100644 --- a/src/vulkan.cpp +++ b/src/vulkan.cpp @@ -915,29 +915,23 @@ void render_benchmark(swapchain_stats& data, struct overlay_params& params, ImVe ImGui::End(); } -int change_on_load_temp (int info, int high, int med) { - if (info >= high) { - return 1; - } - else if (info >= med && info < high) { - return 2; - } - else { - return 3; + +ImVec4 change_on_load_temp (struct LOAD_DATA& data, int current) { + if (current >= data.med_load){ + float diff = float(current - data.med_load) / float(data.high_load - data.med_load); + float x = (data.color_high.x - data.color_med.x) * diff; + float y = (data.color_high.y - data.color_med.y) * diff; + float z = (data.color_high.z - data.color_med.z) * diff; + return ImVec4(data.color_med.x + x, data.color_med.y + y, data.color_med.z + z, 1.0); + } else { + float diff = float(current) / float(data.med_load); + float x = (data.color_med.x - data.color_low.x) * diff; + float y = (data.color_med.y - data.color_low.y) * diff; + float z = (data.color_med.z - data.color_low.z) * diff; + return ImVec4(data.color_low.x + x, data.color_low.y + y, data.color_low.z + z, 1.0); } } - -struct LOAD_DATA { - ImVec4 color_high; - ImVec4 color_med; - ImVec4 color_low; - unsigned high_load; - unsigned med_load; -}; - - - void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2& window_size, bool is_vulkan) { ImGui::GetIO().FontGlobalScale = params.font_scale; @@ -976,7 +970,6 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2& ImGui::TableNextCell(); auto text_color = data.colors.text; if (params.enabled[OVERLAY_PARAM_ENABLED_gpu_load_change]){ - auto load_color = data.colors.text; struct LOAD_DATA gpu_data = {data.colors.gpu_load_high, data.colors.gpu_load_med, data.colors.gpu_load_low, @@ -984,19 +977,8 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2& params.gpu_load_value[1] }; - int gpu_load = change_on_load_temp(gpu_info.load, params.gpu_load_value[0], params.gpu_load_value[1]); - // 1 is high, 2 is medium, and 3 is low load/temp - switch (gpu_load) { - case 1: - load_color = data.colors.gpu_load_high; - break; - case 2: - load_color = data.colors.gpu_load_med; - break; - case 3: - load_color = data.colors.gpu_load_low; - break; - } + + auto load_color = change_on_load_temp(gpu_data, gpu_info.load); right_aligned_text(load_color, ralign_width, "%i", gpu_info.load); ImGui::SameLine(0, 1.0f); ImGui::TextColored(load_color,"%%"); @@ -1045,20 +1027,15 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2& auto text_color = data.colors.text; if (params.enabled[OVERLAY_PARAM_ENABLED_cpu_load_change]){ int cpu_load_percent = int(cpuStats.GetCPUDataTotal().percent); - auto load_color = data.colors.text; - int cpu_load = change_on_load_temp(cpu_load_percent, params.cpu_load_value[0], params.cpu_load_value[1]); - // 1 is high, 2 is medium, and 3 is low load/temp - switch (cpu_load) { - case 1: - load_color = data.colors.cpu_load_high; - break; - case 2: - load_color = data.colors.cpu_load_med; - break; - case 3: - load_color = data.colors.cpu_load_low; - break; - } + struct LOAD_DATA cpu_data = {data.colors.cpu_load_high, + data.colors.cpu_load_med, + data.colors.cpu_load_low, + params.cpu_load_value[0], + params.cpu_load_value[1] + }; + + + auto load_color = change_on_load_temp(cpu_data, cpu_load_percent); right_aligned_text(load_color, ralign_width, "%d", cpu_load_percent); ImGui::SameLine(0, 1.0f); ImGui::TextColored(load_color, "%%"); From 2496ab35416263817424df510e2fd96bb023112a Mon Sep 17 00:00:00 2001 From: Alessandro Toia Date: Thu, 22 Oct 2020 16:56:17 -0700 Subject: [PATCH 3/4] After parsing load colors make sure it has a size of 3 --- src/overlay_params.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/overlay_params.cpp b/src/overlay_params.cpp index 3f8717c7..1dd95bd5 100644 --- a/src/overlay_params.cpp +++ b/src/overlay_params.cpp @@ -162,6 +162,10 @@ parse_load_color(const char *str) trim(token); load_colors.push_back(std::stoi(token, NULL, 16)); } + while (load_colors.size() != 3) { + load_colors.push_back(std::stoi("FFFFFF" , NULL, 16)); + } + return load_colors; } From 466fc1a0084d0c7b4a1b1bc95826753df11319b3 Mon Sep 17 00:00:00 2001 From: Alessandro Toia Date: Sun, 25 Oct 2020 10:22:05 -0700 Subject: [PATCH 4/4] If load is high set the defined high color --- src/vulkan.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/vulkan.cpp b/src/vulkan.cpp index c8e44b65..5e9a4c62 100644 --- a/src/vulkan.cpp +++ b/src/vulkan.cpp @@ -917,7 +917,10 @@ void render_benchmark(swapchain_stats& data, struct overlay_params& params, ImVe ImVec4 change_on_load_temp (struct LOAD_DATA& data, int current) { - if (current >= data.med_load){ + if (current >= data.high_load){ + return data.color_high; + } + else if (current >= data.med_load){ float diff = float(current - data.med_load) / float(data.high_load - data.med_load); float x = (data.color_high.x - data.color_med.x) * diff; float y = (data.color_high.y - data.color_med.y) * diff;