diff --git a/gfx/drivers_shader/glslang_util.cpp b/gfx/drivers_shader/glslang_util.cpp index a99167eeae..9c00872097 100644 --- a/gfx/drivers_shader/glslang_util.cpp +++ b/gfx/drivers_shader/glslang_util.cpp @@ -252,6 +252,9 @@ static glslang_format glslang_find_format(const char *fmt) static bool glslang_parse_meta(const vector &lines, glslang_meta *meta) { + char id[64] = {}; + char desc[64] = {}; + *meta = glslang_meta{}; for (auto &line : lines) { @@ -268,6 +271,21 @@ static bool glslang_parse_meta(const vector &lines, glslang_meta *meta) str++; meta->name = str; } + else if (line.find("#pragma parameter ") == 0) + { + float initial, minimum, maximum, step; + int ret = sscanf(line.c_str(), "#pragma parameter %63s \"%63[^\"]\" %f %f %f %f", + id, desc, &initial, &minimum, &maximum, &step); + + if (ret == 4) + { + step = 0.1f * (maximum - minimum); + ret = 5; + } + + if (ret == 5) + meta->parameters.push_back({ id, desc, initial, minimum, maximum, step }); + } else if (line.find("#pragma format ") == 0) { if (meta->rt_format != SLANG_FORMAT_UNKNOWN) diff --git a/gfx/drivers_shader/glslang_util.hpp b/gfx/drivers_shader/glslang_util.hpp index a28d7fbd19..0ababea8b1 100644 --- a/gfx/drivers_shader/glslang_util.hpp +++ b/gfx/drivers_shader/glslang_util.hpp @@ -63,8 +63,19 @@ enum glslang_format SLANG_FORMAT_UNKNOWN }; +struct glslang_parameter +{ + std::string id; + std::string desc; + float initial; + float minimum; + float maximum; + float step; +}; + struct glslang_meta { + std::vector parameters; std::string name; glslang_format rt_format = SLANG_FORMAT_UNKNOWN; }; diff --git a/gfx/drivers_shader/shader_vulkan.cpp b/gfx/drivers_shader/shader_vulkan.cpp index 10d67acf3a..416119af13 100644 --- a/gfx/drivers_shader/shader_vulkan.cpp +++ b/gfx/drivers_shader/shader_vulkan.cpp @@ -2736,7 +2736,6 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset( return nullptr; video_shader_resolve_relative(shader.get(), path); - video_shader_resolve_parameters(conf.get(), shader.get()); bool last_pass_is_fbo = shader->pass[shader->passes - 1].fbo.valid; auto tmpinfo = *info;