diff --git a/workspace/all/minarch/minarch.c b/workspace/all/minarch/minarch.c index 81fc45db0..fad2dcd22 100644 --- a/workspace/all/minarch/minarch.c +++ b/workspace/all/minarch/minarch.c @@ -6971,9 +6971,20 @@ static int OptionShaders_optionChanged(MenuList* list, int i) { MenuItem* item = &list->items[y]; item->value = config.shaders.options[y].value; } - // Recursively call Config_syncShaders again for some reason - if(i==SH_SHADERS_PRESET) + + if(i==SH_SHADERS_PRESET) { + // On shader preset change: + // Push all new shader settings to shader engine, + // compile shaders if needed, populate pragmas list initShaders(); + + // Now that we have a list of shader parameters, + // re-read shader preset file to set pragma values in-menu + Config_syncShaders(item->key, item->value); + + // Push parameters to shader engine + applyShaderSettings(); + } return MENU_CALLBACK_NOP; }