X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Foutput.cpp;h=1d82cae6a9ed95f20debbcf500a6a242c929c54a;hb=c6b29fbf9927467b21dca65539a1fa2c98f96e0e;hp=f1e9b4be99ca8a2582e7a97944c0c16666f80540;hpb=bde40be11da83206f3d33a8225963d47a413662e;p=libs%2Fgl.git diff --git a/source/glsl/output.cpp b/source/glsl/output.cpp index f1e9b4be..1d82cae6 100644 --- a/source/glsl/output.cpp +++ b/source/glsl/output.cpp @@ -32,16 +32,22 @@ const string &Formatter::apply(Stage &s) formatted += '\n'; } + if(s.required_features.arb_enhanced_layouts) + append("#extension GL_ARB_enhanced_layouts: require\n"); if(s.required_features.arb_explicit_attrib_location) - append("#extension arb_explicit_attrib_location: require\n"); + append("#extension GL_ARB_explicit_attrib_location: require\n"); + if(s.required_features.arb_explicit_uniform_location) + append("#extension GL_ARB_explicit_uniform_location: require\n"); if(s.required_features.arb_gpu_shader5) - append("#extension arb_gpu_shader5: require\n"); + append("#extension GL_ARB_gpu_shader5: require\n"); + if(s.required_features.arb_separate_shader_objects) + append("#extension GL_ARB_separate_shader_objects: require\n"); if(s.required_features.arb_uniform_buffer_object) - append("#extension arb_uniform_buffer_object: require\n"); + append("#extension GL_ARB_uniform_buffer_object: require\n"); if(s.required_features.ext_gpu_shader4) - append("#extension ext_gpu_shader4: require\n"); + append("#extension GL_EXT_gpu_shader4: require\n"); if(s.required_features.ext_texture_array) - append("#extension ext_texture_array: require\n"); + append("#extension GL_EXT_texture_array: require\n"); formatted += '\n'; s.content.visit(*this); @@ -145,13 +151,6 @@ void Formatter::visit(Literal &literal) append(literal.token); } -void Formatter::visit(ParenthesizedExpression &parexpr) -{ - append('('); - parexpr.expression->visit(*this); - append(')'); -} - void Formatter::visit(VariableReference &var) { append(var.name); @@ -313,7 +312,12 @@ void Formatter::visit(VariableDeclaration &var) void Formatter::visit(InterfaceBlock &iface) { - append(format("%s %s\n", iface.interface, iface.name)); + if(iface.layout) + { + iface.layout->visit(*this); + append(' '); + } + append(format("%s %s\n", iface.interface, iface.block_name)); if(iface.struct_declaration) iface.struct_declaration->members.visit(*this); if(!iface.instance_name.empty())