X-Git-Url: https://eleni.mutantstargoat.com/git/?p=demo;a=blobdiff_plain;f=src%2Fvulkan%2Frenderer-vk.cc;fp=src%2Fvulkan%2Frenderer-vk.cc;h=cbaa950a7d91a5d73f7cc62804fae7ca5b220f0e;hp=187444e319d2ed982503128b5674cc553230935c;hb=f6ceb163227d00d7f97df1fc2dfbdd419c56277e;hpb=75b8713addd14a845e2fa8ad9a9d3d4a6a323bec diff --git a/src/vulkan/renderer-vk.cc b/src/vulkan/renderer-vk.cc index 187444e..cbaa950 100644 --- a/src/vulkan/renderer-vk.cc +++ b/src/vulkan/renderer-vk.cc @@ -1,7 +1,13 @@ #include +#include +#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; }