#include <msp/gl/extensions/arb_gpu_shader5.h>
#include <msp/gl/extensions/arb_uniform_buffer_object.h>
#include <msp/gl/extensions/ext_gpu_shader4.h>
+#include <msp/gl/extensions/ext_texture_array.h>
#include <msp/strings/format.h>
#include <msp/strings/regex.h>
#include <msp/strings/utils.h>
target = &*i;
}
+ if(stage.required_version>target->required_version)
+ target->required_version = stage.required_version;
for(NodeList<Statement>::iterator i=stage.content.body.begin(); i!=stage.content.body.end(); ++i)
target->content.body.push_back(*i);
apply<DeclarationCombiner>(*target);
void ProgramCompiler::generate(Stage &stage)
{
+ if(module->shared.required_version>stage.required_version)
+ stage.required_version = module->shared.required_version;
inject_block(stage.content, module->shared.content);
apply<DeclarationReorderer>(stage);
call.name = "texture2D";
else if(type=="sampler3D")
call.name = "texture3D";
+ else if(type=="samplerCube")
+ call.name = "textureCube";
else if(type=="sampler1DShadow")
call.name = "shadow1D";
else if(type=="sampler2DShadow")
call.name = "shadow2D";
+ else if(type=="sampler1DArray")
+ {
+ check_extension(EXT_texture_array);
+ call.name = "texture1DArray";
+ }
+ else if(type=="sampler2DArray")
+ {
+ check_extension(EXT_texture_array);
+ call.name = "texture2DArray";
+ }
+ else if(type=="sampler1DArrayShadow")
+ {
+ check_extension(EXT_texture_array);
+ call.name = "shadow1DArray";
+ }
+ else if(type=="sampler2DArrayShadow")
+ {
+ check_extension(EXT_texture_array);
+ call.name = "shadow2DArray";
+ }
for(; i!=call.arguments.end(); ++i)
(*i)->visit(*this);