summaryrefslogtreecommitdiff
path: root/gfx
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2026-01-29 18:04:34 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2026-01-29 18:04:34 +0000
commitb225af0ef95b886abf20a4c450b5a0b3ba351730 (patch)
tree2d32c64d8b65d7179cbb2d95d2c5367287288ea4 /gfx
parentExplicit cast to vec3 to disambiguate length/distance calc (diff)
downloadilt-b225af0ef95b886abf20a4c450b5a0b3ba351730.tar.bz2
ilt-b225af0ef95b886abf20a4c450b5a0b3ba351730.tar.xz
ilt-b225af0ef95b886abf20a4c450b5a0b3ba351730.zip
Fix search/replace of GL_* macros in glsl
Diffstat (limited to 'gfx')
-rw-r--r--gfx/gl/shader.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/gfx/gl/shader.cpp b/gfx/gl/shader.cpp
index cc6473e..319726f 100644
--- a/gfx/gl/shader.cpp
+++ b/gfx/gl/shader.cpp
@@ -64,7 +64,7 @@ Shader::compile() const
};
if (lookups) {
std::basic_string<GLchar> textMod {text};
- for (const auto & match : ctre::search_all<R"(\bGL_[A-Z_]+\b)">(textMod)) {
+ while (const auto match = ctre::search<R"(\bGL_[A-Z_]+\b)">(textMod)) {
if (const auto * const lookup = std::find_if(LOOKUPS.begin(), LOOKUPS.end(),
[&match](const auto & lookup) {
return std::get<std::string_view>(lookup) == match;
@@ -73,6 +73,9 @@ Shader::compile() const
const auto & [name, pname, getFunction] = *lookup;
textMod.replace(match.begin(), match.end(), getFunction(pname));
}
+ else {
+ throw std::domain_error(std::format("Unknown shader constant: {}", match.view()));
+ }
}
source(textMod.c_str(), static_cast<GLint>(textMod.length()));
}