+gpipeline;
+
+struct framebuffer{
+ const char *display_name;
+ int resolution_div, /* definition */
+ fixed_w,
+ fixed_h,
+
+ render_w, /* runtime */
+ render_h;
+
+ struct framebuffer_attachment{
+ const char *display_name;
+
+ enum framebuffer_attachment_type{
+ k_framebuffer_attachment_type_none,
+ k_framebuffer_attachment_type_texture,
+ k_framebuffer_attachment_type_renderbuffer,
+ k_framebuffer_attachment_type_texture_depth
+ }
+ purpose;
+
+ enum framebuffer_quality_profile{
+ k_framebuffer_quality_all,
+ k_framebuffer_quality_high_only
+ }
+ quality;
+
+ GLenum internalformat,
+ format,
+ type,
+ attachment;
+
+ GLuint id;
+
+ /* Runtime */
+ int debug_view;
+ }
+ attachments[5];
+ GLuint fb;
+ framebuffer **link;
+}
+extern framebuffers[];
+
+
+struct shader_props_standard
+{
+ u32 tex_diffuse;
+};
+
+struct shader_props_terrain
+{
+ u32 tex_diffuse;
+ v2f blend_offset;
+ v4f sand_colour;
+};
+
+struct shader_props_vertex_blend
+{
+ u32 tex_diffuse;
+ v2f blend_offset;
+};
+
+struct shader_props_water
+{
+ v4f shore_colour;
+ v4f deep_colour;
+ f32 fog_scale;
+ f32 fresnel;
+ f32 water_sale;
+ v4f wave_speed;
+};
+
+struct shader_props_cubemapped
+{
+ u32 tex_diffuse;
+ u32 cubemap_entity;
+ v4f tint;
+};