void Program::collect_uniforms(const SpirVModule &mod, const vector<uint8_t> &used_variables)
{
// Prepare the default block
- reflect_data.uniform_blocks.push_back(ReflectData::UniformBlockInfo());
+ reflect_data.uniform_blocks.emplace_back();
vector<vector<string> > block_uniform_names(1);
const vector<SpirVModule::Variable> &variables = mod.get_variables();
const SpirVModule::Variable &v = variables[i];
if((v.storage==SpirVModule::UNIFORM || v.storage==SpirVModule::PUSH_CONSTANT) && v.struct_type)
{
- reflect_data.uniform_blocks.push_back(ReflectData::UniformBlockInfo());
+ reflect_data.uniform_blocks.emplace_back();
ReflectData::UniformBlockInfo &info = reflect_data.uniform_blocks.back();
info.name = v.struct_type->name;
if(v.storage==SpirVModule::PUSH_CONSTANT)
string prefix;
if(!v.name.empty())
prefix = v.struct_type->name+".";
- block_uniform_names.push_back(vector<string>());
+ block_uniform_names.emplace_back();
collect_block_uniforms(*v.struct_type, prefix, 0, block_uniform_names.back());
}
else if(v.storage==SpirVModule::UNIFORM_CONSTANT && (v.location>=0 || v.binding>=0))
{
block_uniform_names[0].push_back(v.name);
- reflect_data.uniforms.push_back(ReflectData::UniformInfo());
+ reflect_data.uniforms.emplace_back();
ReflectData::UniformInfo &info = reflect_data.uniforms.back();
info.name = v.name;
info.tag = v.name;
{
string name = prefix+m.name;
uniform_names.push_back(name);
- reflect_data.uniforms.push_back(ReflectData::UniformInfo());
+ reflect_data.uniforms.emplace_back();
ReflectData::UniformInfo &info = reflect_data.uniforms.back();
info.name = name;
info.tag = name;
for(const SpirVModule::Variable *v: e.globals)
if(v->storage==SpirVModule::INPUT && used_variables[v-variables.data()])
{
- reflect_data.attributes.push_back(ReflectData::AttributeInfo());
+ reflect_data.attributes.emplace_back();
ReflectData::AttributeInfo &info = reflect_data.attributes.back();
info.name = v->name;
info.location = v->location;