- const TypeDeclaration *type = var.type_declaration;
- while(const BasicTypeDeclaration *basic = dynamic_cast<const BasicTypeDeclaration *>(type))
- type = basic->base_type;
- if(dynamic_cast<const ImageTypeDeclaration *>(type))
- {
- int bind_point = (var.layout ? get_layout_value(*var.layout, "binding") : -1);
- if(bind_point>=0)
- {
- used_bindings[0].insert(bind_point);
- uniforms[var.name].bind_point = bind_point;
- }
- else
- unbound_textures.push_back(&var);
- }
+ const TypeDeclaration *base_type = get_ultimate_base_type(var.type_declaration);
+ if(dynamic_cast<const ImageTypeDeclaration *>(base_type) && !visit_uniform(var.name, var.layout))
+ unbound_textures.push_back(&var);