backup - missing some
[demo] / src / vulkan / renderer-vk.cc
index 187444e..cbaa950 100644 (file)
@@ -1,7 +1,13 @@
 #include <vulkan/vulkan.h>
+#include <stdio.h>
 
+#include "gfxapi.h"
 #include "renderer-vk.h"
 #include "uniforms.h"
+#include "vkutil.h"
+#include "vkutil-pipeline.h"
+
+static VkuPipelineGenerator pipe_gen;
 
 RendererVK::RendererVK()
 {
@@ -13,14 +19,65 @@ RendererVK::RendererVK()
        dskytex = 0;
 
        fog_density = 0;
-       vbuf = fbuf = svbuf = 0;
+
+       default_vs_ub = 0;
+       default_fs_ub = 0;
+       sky_vs_ub = 0;
 }
 
 RendererVK::~RendererVK()
 {
-       delete vbuf;
-       delete fbuf;
-       delete svbuf;
+       delete default_vs_ub;
+       delete default_fs_ub;
+       delete sky_vs_ub;
+}
+
+bool RendererVK::create_resources()
+{
+       /* default pipeline: create binding points */
+       default_vs_ub = gfx_create_uniform_buffer();
+       if(!default_vs_ub->create(sizeof default_vs_uniforms)) {
+               fprintf(stderr, "Failed to create the default VS uniform buffer.\n");
+               return false;
+       }
+       ResourceVK default_vs_res;
+       if(!default_vs_res.create_ds_layout(MATRIX_UNIFORMS,
+                                           VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
+                                           VK_SHADER_STAGE_VERTEX_BIT, 0)) {
+               fprintf(stderr, "Failed to create the ds layout for the default vs uniform buffer.\n");
+               return false;
+       }
+       default_resources.push_back(default_vs_res);
+
+       default_fs_ub = gfx_create_uniform_buffer();
+       if(!default_fs_ub->create(sizeof default_fs_uniforms)) {
+               fprintf(stderr, "Failed to create the default FS uniform buffer.\n");
+               return false;
+       }
+       ResourceVK default_fs_res;
+       if(!default_fs_res.create_ds_layout(SHADING_UNIFORMS,
+                                           VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
+                                           VK_SHADER_STAGE_FRAGMENT_BIT, 0)) {
+               fprintf(stderr, "Failed to create the ds layout for the default VS uniform buffer.\n");
+               return false;
+       }
+       default_resources.push_back(default_fs_res);
+
+       sky_vs_ub = gfx_create_uniform_buffer();
+       if(!sky_vs_ub->create(sizeof sky_vs_uniforms)) {
+               fprintf(stderr, "Failed to create the VS uniform buffer for the sky.\n");
+               return false;
+       }
+       ResourceVK sky_vs_res;
+       if(!sky_vs_res.create_ds_layout(SKY_MATRIX_UNIFORMS,
+                                       VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
+                                       VK_SHADER_STAGE_FRAGMENT_BIT, 0)) {
+               fprintf(stderr, "Failed to create the ds layout for the sky VS uniform buffer.\n");
+               return false;
+       }
+       sky_resources.push_back(sky_vs_res);
+
+       return true;
 }
 
 bool RendererVK::create()
@@ -30,16 +87,16 @@ bool RendererVK::create()
                return false;
        }
 
-/*     if(!create_sky_pipeline()) {
-               fprintf(stderr, "Failed to create sky pipeline.\n");
-               return false;
-       }*/
+       /*      if(!create_sky_pipeline()) {
+                       fprintf(stderr, "Failed to create sky pipeline.\n");
+                       return false;
+               }*/
 
        return true;
 }
 
 bool RendererVK::create_default_pipeline()
 {
-       /* vertex */
+
        return true;
 }