mirror of
https://github.com/hyprwm/Hyprland.git
synced 2026-08-24 10:04:19 -05:00
opengl: optimize CShaderLoader::getDefines() (#15212)
This commit is contained in:
+20
-19
@@ -65,26 +65,27 @@ void CShaderLoader::include(const std::string& filename) {
|
||||
}
|
||||
|
||||
std::string CShaderLoader::getDefines(ShaderFeatureFlags features) {
|
||||
std::string res = "";
|
||||
std::map<std::string, std::string> defines = {
|
||||
{"USE_RGBA", features & SH_FEAT_RGBA ? "1" : "0"},
|
||||
{"USE_DISCARD", features & SH_FEAT_DISCARD ? "1" : "0"},
|
||||
{"USE_TINT", features & SH_FEAT_TINT ? "1" : "0"},
|
||||
{"USE_ROUNDING", features & SH_FEAT_ROUNDING ? "1" : "0"},
|
||||
{"USE_CM", features & SH_FEAT_CM ? "1" : "0"},
|
||||
{"USE_TONEMAP", features & SH_FEAT_TONEMAP ? "1" : "0"},
|
||||
{"USE_SDR_MOD", features & SH_FEAT_SDR_MOD ? "1" : "0"},
|
||||
{"USE_BLUR", features & SH_FEAT_BLUR ? "1" : "0"},
|
||||
{"USE_ICC", features & SH_FEAT_ICC ? "1" : "0"},
|
||||
{"USE_MIRROR", features & SH_FEAT_MIRROR ? "1" : "0"},
|
||||
{"USE_MOTION_BLUR", features & SH_FEAT_MOTION_BLUR ? "1" : "0"},
|
||||
{"USE_BLUR_ALPHA_MASK", features & SH_FEAT_BLUR_ALPHA_MASK ? "1" : "0"},
|
||||
{"USE_BLUR_MATTE", features & SH_FEAT_BLUR_MATTE ? "1" : "0"},
|
||||
{"USE_ALT_TONEMAP", features & SH_FEAT_ALT_TONEMAP ? "1" : "0"},
|
||||
static constexpr auto defines = std::to_array<std::pair<std::string_view, ePreparedFragmentShaderFeature>>({
|
||||
{"USE_RGBA", SH_FEAT_RGBA},
|
||||
{"USE_DISCARD", SH_FEAT_DISCARD},
|
||||
{"USE_TINT", SH_FEAT_TINT},
|
||||
{"USE_ROUNDING", SH_FEAT_ROUNDING},
|
||||
{"USE_CM", SH_FEAT_CM},
|
||||
{"USE_TONEMAP", SH_FEAT_TONEMAP},
|
||||
{"USE_SDR_MOD", SH_FEAT_SDR_MOD},
|
||||
{"USE_BLUR", SH_FEAT_BLUR},
|
||||
{"USE_ICC", SH_FEAT_ICC},
|
||||
{"USE_MIRROR", SH_FEAT_MIRROR},
|
||||
{"USE_MOTION_BLUR", SH_FEAT_MOTION_BLUR},
|
||||
{"USE_BLUR_ALPHA_MASK", SH_FEAT_BLUR_ALPHA_MASK},
|
||||
{"USE_BLUR_MATTE", SH_FEAT_BLUR_MATTE},
|
||||
{"USE_ALT_TONEMAP", SH_FEAT_ALT_TONEMAP},
|
||||
});
|
||||
|
||||
};
|
||||
for (const auto& [name, value] : defines) {
|
||||
res += std::format("#define {} {}\n", name, value);
|
||||
std::string res;
|
||||
res.reserve(309);
|
||||
for (const auto& [name, flag] : defines) {
|
||||
std::format_to(std::back_inserter(res), "#define {} {}\n", name, (features & flag) != 0 ? '1' : '0');
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user