mirror of
https://github.com/libretro/RetroArch
synced 2025-02-07 03:40:24 +00:00
Shader_Preset_Remove_parameters_line
This commit is contained in:
parent
4d961b0970
commit
deb8e2b88c
@ -416,46 +416,40 @@ static struct video_shader_parameter *video_shader_parse_find_parameter(
|
||||
* @conf : Preset file to read from.
|
||||
* @shader : Shader passes handle.
|
||||
*
|
||||
* Reads the current value for all parameters from config file.
|
||||
* Checks for parameters in the parameter list which don't have a value set
|
||||
* For each parameter in the shader, if a value is set in the config file
|
||||
* load this value to the parameter's current value.
|
||||
*
|
||||
* Returns: true (1) if successful, otherwise false (0).
|
||||
**/
|
||||
bool video_shader_resolve_current_parameters(config_file_t *conf,
|
||||
struct video_shader *shader)
|
||||
{
|
||||
char parameters[4096];
|
||||
const char *id = NULL;
|
||||
char *save = NULL;
|
||||
unsigned i;
|
||||
const struct config_entry_list *entry = NULL;
|
||||
|
||||
if (!conf)
|
||||
return false;
|
||||
|
||||
parameters[0] = '\0';
|
||||
|
||||
/* Read in parameters which override the defaults. */
|
||||
if (!config_get_array(conf, "parameters",
|
||||
parameters, sizeof(parameters)))
|
||||
return true;
|
||||
|
||||
for ( id = strtok_r(parameters, ";", &save); id;
|
||||
id = strtok_r(NULL, ";", &save))
|
||||
/* For all parameters in the shader see if there is any config value set */
|
||||
for (i = 0; i < shader->num_parameters; i++)
|
||||
{
|
||||
/* Get the parameter in the shader matching this name */
|
||||
struct video_shader_parameter *parameter =
|
||||
(struct video_shader_parameter*)
|
||||
video_shader_parse_find_parameter(
|
||||
shader->parameters, shader->num_parameters, id);
|
||||
|
||||
if (!parameter)
|
||||
entry = config_get_entry(conf, shader->parameters[i].id);
|
||||
|
||||
/* Only try to load the parameter value if an entry exists in the config */
|
||||
if (entry)
|
||||
{
|
||||
RARCH_WARN("[CGP/GLSLP]: Parameter %s is set in the preset,"
|
||||
" but no shader uses this parameter, ignoring.\n", id);
|
||||
continue;
|
||||
}
|
||||
struct video_shader_parameter *parameter =
|
||||
(struct video_shader_parameter*)
|
||||
video_shader_parse_find_parameter(
|
||||
shader->parameters, shader->num_parameters, shader->parameters[i].id);
|
||||
|
||||
if (!config_get_float(conf, id, ¶meter->current))
|
||||
RARCH_WARN("[CGP/GLSLP]: Parameter %s is not set in preset.\n", id);
|
||||
if (config_get_float(conf, shader->parameters[i].id, ¶meter->current))
|
||||
RARCH_LOG("[Shaders-Load]: Preset Parameter Loaded: %s = %f.\n",
|
||||
shader->parameters[i].id, parameter->current);
|
||||
else
|
||||
RARCH_WARN("[Shaders-Load]: Preset Parameter Name %s is set in preset "
|
||||
"but couldn't load its value.\n", shader->parameters[i].id);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -468,8 +462,9 @@ bool video_shader_resolve_current_parameters(config_file_t *conf,
|
||||
*
|
||||
* Resolves all shader parameters belonging to shaders.
|
||||
* Fills the parameter definition list of the shader
|
||||
* Does not read any of the config parameter values
|
||||
*
|
||||
* then calls video_shader_resolve_current_parameters to
|
||||
* read in the config parameter values
|
||||
*
|
||||
* Returns: true (1) if successful, otherwise false (0).
|
||||
**/
|
||||
bool video_shader_resolve_parameters(config_file_t *conf,
|
||||
@ -815,51 +810,33 @@ bool video_shader_write_referenced_preset(const char *path,
|
||||
/* If the shader has parameters */
|
||||
if (shader->num_parameters)
|
||||
{
|
||||
size_t param_size = 4096 * sizeof(char);
|
||||
char *override_parameters = (char*)malloc(param_size);
|
||||
float parameter_value_reference;
|
||||
unsigned i;
|
||||
float parameter_value_reference = 0.0f;
|
||||
|
||||
param_size = 4096 * sizeof(char);
|
||||
override_parameters[0] = '\0';
|
||||
parameter_value_reference = 0.0f;
|
||||
|
||||
if (override_parameters)
|
||||
for (i = 0; i < shader->num_parameters; i++)
|
||||
{
|
||||
unsigned i;
|
||||
bool add_param_to_override = false;
|
||||
|
||||
entry = config_get_entry(root_conf, shader->parameters[i].id);
|
||||
|
||||
for (i = 0; i < shader->num_parameters; i++)
|
||||
/* If the parameter is in the reference config */
|
||||
if (entry)
|
||||
{
|
||||
bool add_param_to_override = false;
|
||||
|
||||
entry = config_get_entry(root_conf, shader->parameters[i].id);
|
||||
|
||||
/* If the parameter is in the reference config */
|
||||
if (entry)
|
||||
{
|
||||
/* If the current param value is different than the referenced preset's value */
|
||||
config_get_float(root_conf, shader->parameters[i].id, ¶meter_value_reference);
|
||||
if (shader->parameters[i].current != parameter_value_reference)
|
||||
add_param_to_override = true;
|
||||
}
|
||||
/* If it's not in the reference config, but it's different than the
|
||||
initial value of the shader */
|
||||
else if (shader->parameters[i].current != shader->parameters[i].initial)
|
||||
/* If the current param value is different than the referenced preset's value */
|
||||
config_get_float(root_conf, shader->parameters[i].id, ¶meter_value_reference);
|
||||
if (shader->parameters[i].current != parameter_value_reference)
|
||||
add_param_to_override = true;
|
||||
|
||||
/* Add the parameter name to the parameters list */
|
||||
if (add_param_to_override)
|
||||
{
|
||||
config_set_float(conf, shader->parameters[i].id, shader->parameters[i].current);
|
||||
strlcat(override_parameters, ";", param_size);
|
||||
strlcat(override_parameters, shader->parameters[i].id, param_size);
|
||||
}
|
||||
}
|
||||
/* If it's not in the reference config, but it's different than the
|
||||
initial value of the shader */
|
||||
else if (shader->parameters[i].current != shader->parameters[i].initial)
|
||||
add_param_to_override = true;
|
||||
|
||||
/* Write the list of override parameter names if there are any*/
|
||||
if (!string_is_empty(override_parameters))
|
||||
config_set_string(conf, "parameters", override_parameters);
|
||||
/* Add the parameter value to the config */
|
||||
if (add_param_to_override)
|
||||
config_set_float(conf, shader->parameters[i].id, shader->parameters[i].current);
|
||||
}
|
||||
free(override_parameters);
|
||||
}
|
||||
|
||||
/* If the shader has textures */
|
||||
@ -1019,9 +996,7 @@ bool override_config_values(config_file_t *conf, config_file_t *override_conf)
|
||||
char *tmp_rel = tmp + tmp_size;
|
||||
char *tmp_base = tmp + 2*tmp_size;
|
||||
struct config_entry_list *override_entry = NULL;
|
||||
char *override_parameters = (char*)malloc(param_size);
|
||||
|
||||
override_parameters[0] = '\0';
|
||||
|
||||
textures_in_conf[0] = '\0';
|
||||
strlcpy(tmp_base, conf->path, tmp_size);
|
||||
|
||||
@ -1062,62 +1037,23 @@ bool override_config_values(config_file_t *conf, config_file_t *override_conf)
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------------------
|
||||
* -------------Update Parameter List to include Override Parameters----------------
|
||||
* --------------------------------------------------------------------------------- */
|
||||
|
||||
/* If there is a 'parameters' entry in the override config we want to add these parameters
|
||||
* to the referenced config if they are not already there */
|
||||
if (config_get_array(override_conf, "parameters", override_parameters, param_size))
|
||||
{
|
||||
/* Get the string for the parameters from the root config */
|
||||
char *parameters = NULL;
|
||||
|
||||
parameters = (char*)malloc(param_size);
|
||||
parameters[0] = '\0';
|
||||
|
||||
/* If there are is no parameters entry in the root config, add one */
|
||||
if (!config_get_array(conf, "parameters", parameters, param_size))
|
||||
{
|
||||
config_set_string(conf, "parameters", "");
|
||||
config_get_array(conf, "parameters", parameters, param_size);
|
||||
}
|
||||
|
||||
/* Step through each parameter in override config */
|
||||
for ( id = strtok_r(override_parameters, ";", &save);
|
||||
id;
|
||||
id = strtok_r(NULL, ";", &save))
|
||||
{
|
||||
/* Add the parameter to the parameter list */
|
||||
strlcat(parameters, ";", param_size);
|
||||
strlcat(parameters, id, param_size);
|
||||
return_val = 1;
|
||||
}
|
||||
config_set_string(conf, "parameters", parameters);
|
||||
|
||||
free(parameters);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------------------
|
||||
* ------------- Update entries to match the override entries ----------------------
|
||||
* --------------------------------------------------------------------------------- */
|
||||
|
||||
for (override_entry = override_conf->entries; override_entry; override_entry = override_entry->next)
|
||||
{
|
||||
/* Only override an entry if the it's key is not "parameters", and not in list of textures */
|
||||
if (!string_is_empty(override_entry->key) && !string_is_equal(override_entry->key, "parameters") && !string_is_equal(override_entry->key, "textures"))
|
||||
/* Only override an entry if the its key is not "textures" */
|
||||
if (!string_is_empty(override_entry->key) && !string_is_equal(override_entry->key, "textures"))
|
||||
{
|
||||
RARCH_LOG("[Shaders-Load Reference]: Entry overridden %s = %s.\n",
|
||||
RARCH_LOG("[Shaders-Load Simple Preset]: Parameter/Entry overridden %s = %s.\n",
|
||||
override_entry->key, override_entry->value);
|
||||
config_set_string(conf, override_entry->key, override_entry->value);
|
||||
return_val = 1;
|
||||
}
|
||||
}
|
||||
|
||||
free(tmp);
|
||||
free(resolved_path);
|
||||
free(override_texture_path);
|
||||
free(override_parameters);
|
||||
free(textures_in_conf);
|
||||
|
||||
return return_val;
|
||||
@ -1426,28 +1362,13 @@ void video_shader_write_conf_preset(config_file_t *conf,
|
||||
shader_write_fbo(conf, &pass->fbo, i);
|
||||
}
|
||||
|
||||
|
||||
/* Write shader parameters which are different than the default
|
||||
* shader values */
|
||||
if (shader->num_parameters)
|
||||
{
|
||||
char parameters[4096];
|
||||
|
||||
parameters[0] = '\0';
|
||||
|
||||
strlcpy(parameters, shader->parameters[0].id, sizeof(parameters));
|
||||
|
||||
for (i = 1; i < shader->num_parameters; i++)
|
||||
{
|
||||
/* O(n^2), but number of parameters is very limited. */
|
||||
strlcat(parameters, ";", sizeof(parameters));
|
||||
strlcat(parameters, shader->parameters[i].id, sizeof(parameters));
|
||||
}
|
||||
|
||||
config_set_string(conf, "parameters", parameters);
|
||||
|
||||
for (i = 0; i < shader->num_parameters; i++)
|
||||
config_set_float(conf, shader->parameters[i].id,
|
||||
shader->parameters[i].current);
|
||||
}
|
||||
if (shader->parameters[i].current != shader->parameters[i].initial)
|
||||
config_set_float(conf, shader->parameters[i].id,
|
||||
shader->parameters[i].current);
|
||||
|
||||
if (shader->luts)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user