void DefaultPrecisionGenerator::apply(Stage &s)
{
stage = &s;
- visit(s.content);
+ s.content.visit(*this);
}
void DefaultPrecisionGenerator::visit(Block &block)
void PrecisionRemover::apply(Stage &stage)
{
- visit(stage.content);
+ stage.content.visit(*this);
NodeRemover().apply(stage, nodes_to_remove);
}
features = feat;
if(!supports_stage(s.type))
throw unsupported_shader(format("Stage %s is not supported", Stage::get_stage_name(s.type)));
- visit(s.content);
+ s.content.visit(*this);
}
void LegacyConverter::visit(Block &block)
if(var.layout && !supports_interface_layouts())
{
vector<Layout::Qualifier>::iterator i;
- for(i=var.layout->qualifiers.begin(); (i!=var.layout->qualifiers.end() && i->identifier!="location"); ++i) ;
+ for(i=var.layout->qualifiers.begin(); (i!=var.layout->qualifiers.end() && i->name!="location"); ++i) ;
if(i!=var.layout->qualifiers.end())
{
- unsigned location = lexical_cast<unsigned>(i->value);
if(stage->type==Stage::VERTEX && var.interface=="in")
{
- stage->locations[var.name] = location;
+ stage->locations[var.name] = i->value;
var.layout->qualifiers.erase(i);
}
else if(stage->type==Stage::FRAGMENT && var.interface=="out")
{
- if(location!=0 && !check_extension(&Features::ext_gpu_shader4))
+ if(i->value!=0 && !check_extension(&Features::ext_gpu_shader4))
throw unsupported_shader("EXT_gpu_shader4 is required");
- stage->locations[var.name] = location;
+ stage->locations[var.name] = i->value;
var.layout->qualifiers.erase(i);
}