- for (unsigned j = 0; j < effect->uniforms_sampler2d.size(); ++j) {
- phase->uniforms_sampler2d.push_back(effect->uniforms_sampler2d[j]);
- phase->uniforms_sampler2d.back().prefix = effect_id;
- frag_shader_uniforms += string("uniform sampler2D ") + effect_id
- + "_" + effect->uniforms_sampler2d[j].name + ";\n";
- }
- for (unsigned j = 0; j < effect->uniforms_bool.size(); ++j) {
- phase->uniforms_bool.push_back(effect->uniforms_bool[j]);
- phase->uniforms_bool.back().prefix = effect_id;
- frag_shader_uniforms += string("uniform bool ") + effect_id
- + "_" + effect->uniforms_bool[j].name + ";\n";
- }
- for (unsigned j = 0; j < effect->uniforms_int.size(); ++j) {
- phase->uniforms_int.push_back(effect->uniforms_int[j]);
- phase->uniforms_int.back().prefix = effect_id;
- frag_shader_uniforms += string("uniform int ") + effect_id
- + "_" + effect->uniforms_int[j].name + ";\n";
- }
- for (unsigned j = 0; j < effect->uniforms_float.size(); ++j) {
- phase->uniforms_float.push_back(effect->uniforms_float[j]);
- phase->uniforms_float.back().prefix = effect_id;
- frag_shader_uniforms += string("uniform float ") + effect_id
- + "_" + effect->uniforms_float[j].name + ";\n";
- }
- for (unsigned j = 0; j < effect->uniforms_vec2.size(); ++j) {
- phase->uniforms_vec2.push_back(effect->uniforms_vec2[j]);
- phase->uniforms_vec2.back().prefix = effect_id;
- frag_shader_uniforms += string("uniform vec2 ") + effect_id
- + "_" + effect->uniforms_vec2[j].name + ";\n";
- }
- for (unsigned j = 0; j < effect->uniforms_vec3.size(); ++j) {
- phase->uniforms_vec3.push_back(effect->uniforms_vec3[j]);
- phase->uniforms_vec3.back().prefix = effect_id;
- frag_shader_uniforms += string("uniform vec3 ") + effect_id
- + "_" + effect->uniforms_vec3[j].name + ";\n";
- }
- for (unsigned j = 0; j < effect->uniforms_vec4.size(); ++j) {
- phase->uniforms_vec4.push_back(effect->uniforms_vec4[j]);
- phase->uniforms_vec4.back().prefix = effect_id;
- frag_shader_uniforms += string("uniform vec4 ") + effect_id
- + "_" + effect->uniforms_vec4[j].name + ";\n";
- }
- for (unsigned j = 0; j < effect->uniforms_vec2_array.size(); ++j) {
- char buf[256];
- phase->uniforms_vec2.push_back(effect->uniforms_vec2_array[j]);
- phase->uniforms_vec2.back().prefix = effect_id;
- snprintf(buf, sizeof(buf), "uniform vec2 %s_%s[%d];\n",
- effect_id.c_str(), effect->uniforms_vec2_array[j].name.c_str(),
- int(effect->uniforms_vec2_array[j].num_values));
- frag_shader_uniforms += buf;
- }
- for (unsigned j = 0; j < effect->uniforms_vec4_array.size(); ++j) {
- char buf[256];
- phase->uniforms_vec4.push_back(effect->uniforms_vec4_array[j]);
- phase->uniforms_vec4.back().prefix = effect_id;
- snprintf(buf, sizeof(buf), "uniform vec4 %s_%s[%d];\n",
- effect_id.c_str(), effect->uniforms_vec4_array[j].name.c_str(),
- int(effect->uniforms_vec4_array[j].num_values));
- frag_shader_uniforms += buf;
- }
- for (unsigned j = 0; j < effect->uniforms_mat3.size(); ++j) {
- phase->uniforms_mat3.push_back(effect->uniforms_mat3[j]);
- phase->uniforms_mat3.back().prefix = effect_id;
- frag_shader_uniforms += string("uniform mat3 ") + effect_id
- + "_" + effect->uniforms_mat3[j].name + ";\n";
- }
+ extract_uniform_declarations(effect->uniforms_sampler2d, "sampler2D", effect_id, &phase->uniforms_sampler2d, &frag_shader_uniforms);
+ extract_uniform_declarations(effect->uniforms_bool, "bool", effect_id, &phase->uniforms_bool, &frag_shader_uniforms);
+ extract_uniform_declarations(effect->uniforms_int, "int", effect_id, &phase->uniforms_int, &frag_shader_uniforms);
+ extract_uniform_declarations(effect->uniforms_float, "float", effect_id, &phase->uniforms_float, &frag_shader_uniforms);
+ extract_uniform_declarations(effect->uniforms_vec2, "vec2", effect_id, &phase->uniforms_vec2, &frag_shader_uniforms);
+ extract_uniform_declarations(effect->uniforms_vec3, "vec3", effect_id, &phase->uniforms_vec3, &frag_shader_uniforms);
+ extract_uniform_declarations(effect->uniforms_vec4, "vec4", effect_id, &phase->uniforms_vec4, &frag_shader_uniforms);
+ extract_uniform_array_declarations(effect->uniforms_vec2_array, "vec2", effect_id, &phase->uniforms_vec2, &frag_shader_uniforms);
+ extract_uniform_array_declarations(effect->uniforms_vec4_array, "vec4", effect_id, &phase->uniforms_vec4, &frag_shader_uniforms);
+ extract_uniform_declarations(effect->uniforms_mat3, "mat3", effect_id, &phase->uniforms_mat3, &frag_shader_uniforms);