Vulkan: Begin parsing parameters.

This commit is contained in:
Hans-Kristian Arntzen 2016-08-01 15:48:09 +02:00
parent 8d186dab88
commit a50c204d5e
3 changed files with 29 additions and 1 deletions

View File

@ -252,6 +252,9 @@ static glslang_format glslang_find_format(const char *fmt)
static bool glslang_parse_meta(const vector<string> &lines, glslang_meta *meta) static bool glslang_parse_meta(const vector<string> &lines, glslang_meta *meta)
{ {
char id[64] = {};
char desc[64] = {};
*meta = glslang_meta{}; *meta = glslang_meta{};
for (auto &line : lines) for (auto &line : lines)
{ {
@ -268,6 +271,21 @@ static bool glslang_parse_meta(const vector<string> &lines, glslang_meta *meta)
str++; str++;
meta->name = 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) else if (line.find("#pragma format ") == 0)
{ {
if (meta->rt_format != SLANG_FORMAT_UNKNOWN) if (meta->rt_format != SLANG_FORMAT_UNKNOWN)

View File

@ -63,8 +63,19 @@ enum glslang_format
SLANG_FORMAT_UNKNOWN SLANG_FORMAT_UNKNOWN
}; };
struct glslang_parameter
{
std::string id;
std::string desc;
float initial;
float minimum;
float maximum;
float step;
};
struct glslang_meta struct glslang_meta
{ {
std::vector<glslang_parameter> parameters;
std::string name; std::string name;
glslang_format rt_format = SLANG_FORMAT_UNKNOWN; glslang_format rt_format = SLANG_FORMAT_UNKNOWN;
}; };

View File

@ -2736,7 +2736,6 @@ vulkan_filter_chain_t *vulkan_filter_chain_create_from_preset(
return nullptr; return nullptr;
video_shader_resolve_relative(shader.get(), path); 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; bool last_pass_is_fbo = shader->pass[shader->passes - 1].fbo.valid;
auto tmpinfo = *info; auto tmpinfo = *info;