namespace SL {
Compiler::Compiler():
- features(DeviceInfo::get_global().glsl_features),
- module(0),
- compiled(false),
- specialized(false)
+ features(DeviceInfo::get_global().glsl_features)
{ }
Compiler::Compiler(const Features &f):
- features(f),
- module(0),
- compiled(false),
- specialized(false)
+ features(f)
{ }
Compiler::~Compiler()
return module->shared.uniform_block_bindings;
}
+unsigned Compiler::get_n_clip_distances() const
+{
+ if(!compiled)
+ throw invalid_operation("Compiler::get_n_clip_distances");
+ auto i = find_member(module->stages, Stage::VERTEX, &Stage::type);
+ return (i!=module->stages.end() ? i->n_clip_distances : 0);
+}
+
const SourceMap &Compiler::get_source_map() const
{
return module->source_map;
resolve(stage, RESOLVE_TYPES|RESOLVE_VARIABLES|RESOLVE_FUNCTIONS|RESOLVE_EXPRESSIONS);
any_inlined = true;
}
+ if(AggregateDismantler().apply(stage))
+ {
+ resolve(stage, RESOLVE_TYPES|RESOLVE_VARIABLES|RESOLVE_FUNCTIONS|RESOLVE_EXPRESSIONS);
+ any_inlined = true;
+ }
if(ExpressionInliner().apply(stage))
{
resolve(stage, RESOLVE_VARIABLES|RESOLVE_FUNCTIONS|RESOLVE_EXPRESSIONS);