first attempt to add support for geom but I don't like much the design
[vkrt] / src / vk.h
index 58a88ef..772f2e3 100644 (file)
--- a/src/vk.h
+++ b/src/vk.h
@@ -6,6 +6,21 @@
 
 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
 
+enum GEOM_BIND {
+    VERTEX_BIND,
+    NORMAL_BIND,
+    TEXCOORD_BIND,
+    TANGENT_BIND,
+    IDX_BIND
+};
+
+enum GEOM_LOC {
+    VERTEX_LOC,
+    NORMAL_LOC,
+    TANGENT_LOC,
+    IDX_LOC
+};
+
 struct vk_ctx
 {
     VkInstance inst;
@@ -82,18 +97,27 @@ struct vk_attachment {
     struct vk_att_props props;
 };
 
-struct vk_vertex_info
+struct vk_buf
 {
-    int num_verts;
-    int num_components;
+    VkBuffer buf;
+    struct vk_mem_obj mobj;
+};
+
+struct vk_vbo {
+    int num_vertices;
+    struct vk_buf vbo;
 
-    VkPrimitiveTopology topology;
+    /* int num_components; */
 };
 
-struct vk_buf
+struct vk_geometry
 {
-    VkBuffer buf;
-    struct vk_mem_obj mobj;
+    struct vk_vbo vertices;
+    struct vk_vbo normals;
+    struct vk_vbo tangents;
+    struct vk_vbo indices;
+
+    VkPrimitiveTopology topo;
 };
 
 struct vk_renderer
@@ -104,7 +128,7 @@ struct vk_renderer
     VkShaderModule vs;
     VkShaderModule fs;
 
-    struct vk_vertex_info vertex_info;
+    struct vk_geometry *geometry;
 };
 
 struct vk_dims
@@ -251,7 +275,7 @@ vk_create_renderer(struct vk_ctx *ctx,
                    int num_color_att,
                    struct vk_att_props *color_props,
                    struct vk_att_props *depth_props,
-                   struct vk_vertex_info *vert_info,
+                   struct vk_geometry *geometry,
                    struct vk_renderer *renderer);
 
 void
@@ -270,7 +294,6 @@ bool
 vk_record_cmd_buffer(struct vk_ctx *ctx,
                      VkCommandBuffer cmd_buf,
                      struct vk_renderer *renderer,
-                     struct vk_buf *vbo,
                      uint32_t vk_fb_color_count,
                      float *vk_fb_color,
                      VkFramebuffer fb,