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)
{
char id[64] = {};
char desc[64] = {};
*meta = glslang_meta{};
for (auto &line : lines)
{
@ -268,6 +271,21 @@ static bool glslang_parse_meta(const vector<string> &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)

View File

@ -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<glslang_parameter> parameters;
std::string name;
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;
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;