Skip to content

Commit 390584d

Browse files
committed
update according to review
1 parent 39dee0a commit 390584d

File tree

3 files changed

+22
-18
lines changed

3 files changed

+22
-18
lines changed

libopenage/renderer/demo/demo_7.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ void renderer_demo_7(const util::Path &path) {
2929

3030
auto shaderdir = path / "assets" / "test" / "shaders";
3131

32-
// Initialize shader templlalte
32+
// Initialize shader template
3333
world::ShaderTemplate frag_template(shaderdir / "demo_7_shader_command.frag.glsl");
3434

3535
// Load snippets from a snippet directory
@@ -42,10 +42,7 @@ void renderer_demo_7(const util::Path &path) {
4242
vert_shader_file.read());
4343
vert_shader_file.close();
4444

45-
auto frag_shader_src = resources::ShaderSource(
46-
resources::shader_lang_t::glsl,
47-
resources::shader_stage_t::fragment,
48-
frag_template.generate_source());
45+
auto frag_shader_src = frag_template.generate_source();
4946

5047
auto shader = renderer->add_shader({vert_shader_src, frag_shader_src});
5148

libopenage/renderer/stages/world/shader_template.cpp

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,40 +26,46 @@ void ShaderTemplate::load_snippets(const util::Path &snippet_path) {
2626
}
2727

2828
void ShaderTemplate::add_snippet(const util::Path &snippet_path) {
29-
std::string file_name = snippet_path.get_name();
30-
std::string name = file_name.substr(0, file_name.find_last_of('.'));
3129
auto file = snippet_path.open();
3230
std::string content = file.read();
3331
file.close();
3432

33+
std::string name = snippet_path.get_stem();
34+
3535
snippets[name] = content;
3636
}
3737

38-
std::string ShaderTemplate::generate_source() const {
39-
std::string result = template_code;
38+
renderer::resources::ShaderSource ShaderTemplate::generate_source() const {
39+
std::string result_src = template_code;
4040

4141
// Process each placeholder
4242
for (const auto &[name, snippet_code] : snippets) {
4343
std::string placeholder = "// PLACEHOLDER: " + name;
44-
size_t pos = result.find(placeholder);
44+
size_t pos = result_src.find(placeholder);
4545

4646
if (pos != std::string::npos) {
47-
result.replace(pos, placeholder.length(), snippet_code);
47+
result_src.replace(pos, placeholder.length(), snippet_code);
4848
}
4949
else {
5050
log::log(WARN << "Placeholder not found in template: " << name);
5151
}
5252
}
5353

5454
// Check if all placeholders were replaced
55-
size_t placeholder_pos = result.find("// PLACEHOLDER:");
55+
size_t placeholder_pos = result_src.find("// PLACEHOLDER:");
5656
if (placeholder_pos != std::string::npos) {
57-
size_t line_end = result.find('\n', placeholder_pos);
58-
std::string missing = result.substr(placeholder_pos,
59-
line_end - placeholder_pos);
57+
size_t line_end = result_src.find('\n', placeholder_pos);
58+
std::string missing = result_src.substr(placeholder_pos,
59+
line_end - placeholder_pos);
6060
throw Error(MSG(err) << "Missing snippet for placeholder: " << missing);
6161
}
6262

63+
auto result = resources::ShaderSource(
64+
resources::shader_lang_t::glsl,
65+
resources::shader_stage_t::fragment,
66+
std::move(result_src));
67+
6368
return result;
6469
}
70+
6571
} // namespace openage::renderer::world

libopenage/renderer/stages/world/shader_template.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <string>
88
#include <vector>
99

10+
#include "renderer/resources/shader_source.h"
1011
#include "util/path.h"
1112

1213
namespace openage {
@@ -49,12 +50,12 @@ class ShaderTemplate {
4950
* @return Complete shader code.
5051
* @throws Error if any required placeholders are missing snippets.
5152
*/
52-
std::string generate_source() const;
53+
renderer::resources::ShaderSource generate_source() const;
5354

5455
private:
55-
// Original template code with placeholders
56+
/// Original template code with placeholders
5657
std::string template_code;
57-
// Mapping of placeholder IDs to their code snippets
58+
/// Mapping of placeholder IDs to their code snippets
5859
std::map<std::string, std::string> snippets;
5960
};
6061
} // namespace world

0 commit comments

Comments
 (0)