Advertisement
Guest User

Untitled

a guest
Mar 2nd, 2023
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.33 KB | None | 0 0
  1. void VulkanEngine::initRenderPasses()
  2. {    
  3.     RenderPass gBuffer = Builders::buildGBufferRenderPass(m_device, {
  4.                                                                         {VK_FORMAT_R8G8B8A8_UNORM,      VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL},
  5.                                                                         {VK_FORMAT_R16G16B16A16_SFLOAT, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL},
  6.                                                                         {VK_FORMAT_R16G16B16A16_SFLOAT, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL}
  7.                                                                     });
  8.     std::vector<VkImageView> views;
  9.  
  10.     for (auto attachment : m_gBuffer)
  11.         views.push_back(attachment.view);
  12.  
  13.     views.push_back(m_depthImage.view);
  14.  
  15.     gBuffer.framebuffers.push_back(Builders::createFrameBuffer(m_device, c_windowSize, gBuffer.pass, views));
  16.  
  17.     //---------------------------------------------------------------------------------------------------
  18.  
  19.     RenderPass deferredPBR = Builders::buildDeferredPBRRenderPass(m_device, m_swapchainFormat);
  20.  
  21.     for (const auto& swapchainImage : m_swapchainImageViews)
  22.         deferredPBR.framebuffers.push_back(Builders::createFrameBuffer(m_device, c_windowSize, deferredPBR.pass, {swapchainImage}));
  23.  
  24.     m_renderPasses = {gBuffer, deferredPBR};
  25. }
  26.  
  27. void VulkanEngine::initPipelines()
  28. {
  29.     Pipeline gBuffer = Builders::buildGBufferPipeline(m_device,
  30.                                                       c_windowSize,
  31.                                                       m_gBuffer.size(),
  32.                                                       m_renderPasses.at(0).pass,
  33.                                                       {
  34.                                                           m_globalSetLayout,
  35.                                                           m_textureSetLayout
  36.                                                       },
  37.                                                       Mesh::getVertexInputDescription(),
  38.                                                       {
  39.                                                          {"GBuffer.v.spv", VK_SHADER_STAGE_VERTEX_BIT},
  40.                                                          {"GBuffer.g.spv", VK_SHADER_STAGE_GEOMETRY_BIT},
  41.                                                          {"GBuffer.f.spv", VK_SHADER_STAGE_FRAGMENT_BIT}
  42.                                                       });
  43.  
  44.     Pipeline deferredPBR = Builders::buildDeferredPBRPipeline(m_device,
  45.                                                            c_windowSize,
  46.                                                            m_renderPasses.at(1).pass,
  47.                                                            {
  48.                                                                m_globalSetLayout,
  49.                                                                m_gBufferSetLayout
  50.                                                            },
  51.                                                            {
  52.                                                               {"PBR.v.spv", VK_SHADER_STAGE_VERTEX_BIT},
  53.                                                               {"PBR.f.spv", VK_SHADER_STAGE_FRAGMENT_BIT}
  54.                                                            });
  55.  
  56.     m_pipelines = {gBuffer, deferredPBR};
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement