diff --git a/src/libs/gltf/gltf_view/assets/lv_gltf_view_shader.c b/src/libs/gltf/gltf_view/assets/lv_gltf_view_shader.c index 25b6dd7d1e..f4bb54fcf9 100644 --- a/src/libs/gltf/gltf_view/assets/lv_gltf_view_shader.c +++ b/src/libs/gltf/gltf_view/assets/lv_gltf_view_shader.c @@ -1,4 +1,5 @@ #include "lv_gltf_view_shader.h" +#include "../lv_gltf_view_internal.h" #if LV_USE_GLTF @@ -12,8 +13,9 @@ static const lv_opengl_shader_t src_includes[] = { uniform float u_Exposure; - const float STANDARD_GAMMA = 2.2; - const float GAMMA = STANDARD_GAMMA; + // const float STANDARD_GAMMA = 2.2; // Retained for reference - unused + + const float GAMMA = )" LV_GLTF_TONEMAP_GAMMA R"(; const float INV_GAMMA = 1.0 / GAMMA; diff --git a/src/libs/gltf/gltf_view/lv_gltf_view_internal.h b/src/libs/gltf/gltf_view/lv_gltf_view_internal.h index cfdfad8b6e..937c12f46d 100644 --- a/src/libs/gltf/gltf_view/lv_gltf_view_internal.h +++ b/src/libs/gltf/gltf_view/lv_gltf_view_internal.h @@ -25,8 +25,38 @@ * DEFINES *********************/ +/* ::Gamma Presets:: + * Standard Gamma value is 2.2 + * Values range from 0.5 to 3.5, roughly speaking, with + * reasonable results between the 1.5 and 2.8 levels. + * The value must be enclosed with quotes, as a string literal. + */ +#define LV_GLTF_GAMMA_BRIGHTEST "3.5" +#define LV_GLTF_GAMMA_BRIGHTER "3.0" +#define LV_GLTF_GAMMA_BRIGHT "2.6" +#define LV_GLTF_GAMMA_STANDARD "2.2" +#define LV_GLTF_GAMMA_DARK "1.8" +#define LV_GLTF_GAMMA_DARKER "1.3" +#define LV_GLTF_GAMMA_DARKEST "0.8" + #define LV_GLTF_DISTANCE_SCALE_FACTOR 2.5f +/* Apply defaults below if not set explicitly */ + +/* Tone-mapping is not applied if linear output is enabled. + * Linear output is the default. + */ +#ifndef LV_GLTF_LINEAR_OUTPUT + #define LV_GLTF_LINEAR_OUTPUT 1 +#endif + +/* If tone-mapping is applied, this adjusts the brightness + * and color range of the output. Use stringified values. + */ +#ifndef LV_GLTF_TONEMAP_GAMMA + #define LV_GLTF_TONEMAP_GAMMA LV_GLTF_GAMMA_STANDARD +#endif + /********************** * TYPEDEFS **********************/ diff --git a/src/libs/gltf/gltf_view/lv_gltf_view_shader.cpp b/src/libs/gltf/gltf_view/lv_gltf_view_shader.cpp index 039835591e..a3f65b5d01 100644 --- a/src/libs/gltf/gltf_view/lv_gltf_view_shader.cpp +++ b/src/libs/gltf/gltf_view/lv_gltf_view_shader.cpp @@ -141,9 +141,11 @@ lv_result_t lv_gltf_view_shader_injest_discover_defines(lv_array_t * result, lv_ } } } +#if LV_GLTF_LINEAR_OUTPUT if(add_define(result, "LINEAR_OUTPUT", NULL, false) == LV_RESULT_INVALID) { return LV_RESULT_INVALID; } +#endif // only set cutoff value for mask material if(material.alphaMode == fastgltf::AlphaMode::Mask) {