X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fglsl%2Fbuiltin.cpp;h=670cfc2d9f4878b1d55abca1cf453adf8c628816;hp=3800e14bbc0d412552e679f3e2697c514d1deba4;hb=4c805f55d89919d6971d600102ab4d6d65d56dc3;hpb=a82fcc462550d63a101aca4313807b1320789a5a diff --git a/source/glsl/builtin.cpp b/source/glsl/builtin.cpp index 3800e14b..670cfc2d 100644 --- a/source/glsl/builtin.cpp +++ b/source/glsl/builtin.cpp @@ -1,6 +1,7 @@ #include #include #include "builtin.h" +#include "generate.h" #include "parser.h" using namespace std; @@ -24,6 +25,38 @@ Module *get_builtins_module() Parser parser; Module *module = new Module(parser.parse(*io, "", BUILTIN_SOURCE)); + NodeList &shared_body = module->shared.content.body; + + RefPtr type = new BasicTypeDeclaration; + type->source = BUILTIN_SOURCE; + type->name = "void"; + type->kind = BasicTypeDeclaration::VOID; + shared_body.insert(shared_body.begin(), type); + + type = new BasicTypeDeclaration; + type->source = BUILTIN_SOURCE; + type->name = "bool"; + type->kind = BasicTypeDeclaration::BOOL; + shared_body.insert(shared_body.begin(), type); + + type = new BasicTypeDeclaration; + type->source = BUILTIN_SOURCE; + type->name = "int"; + type->size = 32; + type->kind = BasicTypeDeclaration::INT; + shared_body.insert(shared_body.begin(), type); + + type = new BasicTypeDeclaration; + type->source = BUILTIN_SOURCE; + type->name = "float"; + type->size = 32; + type->kind = BasicTypeDeclaration::FLOAT; + shared_body.insert(shared_body.begin(), type); + + TypeResolver().apply(module->shared); + for(list::iterator i=module->stages.begin(); i!=module->stages.end(); ++i) + TypeResolver().apply(*i); + builtins_module = module; } return builtins_module.get();