HoviTron Video Pipeline
Public Member Functions
VulkanPipelineWarping Class Reference

Class that manages the graphic pipeline for the warping. More...

#include <VulkanPipelineWarping.h>

Inheritance diagram for VulkanPipelineWarping:
VulkanPipelineAbsract

Public Member Functions

 VulkanPipelineWarping (VulkanContext *context, VulkanRenderPass *renderPass, InputProvider *inputP, VulkanWrapper *wraps, int inputCamID)
 
void init ()
 
void cleanUp ()
 
void createDescriptorSetLayout ()
 
void update (std::span< InputProvider::StreamFrameInfo > infos, int view)
 
- Public Member Functions inherited from VulkanPipelineAbsract
virtual void init ()=0
 
virtual void cleanUp ()=0
 
void cmdBufferBindBuffer (vk::CommandBuffer &cmdBuffer, int index, InputProvider::StreamFrameInfo &frameInfo, int view)
 
void updateAllBuffer (uint32_t currentImage, int view)
 
void updateBuffer (uint32_t currentImage, int view)
 
virtual void createDescriptorSetLayout ()=0
 
uint32_t getIndexNumber ()
 

Additional Inherited Members

- Data Fields inherited from VulkanPipelineAbsract
vk::Pipeline pipeline
 
vk::DescriptorSetLayout descriptorSetLayout
 
vk::PipelineLayout pipelineLayout
 
- Protected Member Functions inherited from VulkanPipelineAbsract
virtual void createGraphicsPipeline ()=0
 
vk::ShaderModule createShaderModule (const Shader &shader)
 
void createPipeline (std::vector< vk::PipelineShaderStageCreateInfo > &arr)
 
- Protected Attributes inherited from VulkanPipelineAbsract
VulkanContextcontext = nullptr
 
VulkanRenderPassrenderPass = nullptr
 
VulkanWrapperwrapper = nullptr
 
std::unique_ptr< BuffersControllerbufferController
 
int subPass = 0
 
int inputId = 0
 
int colorAttachmentNb = 0
 
bool depthTest = true
 
bool depthWrite = true
 

Detailed Description

Class that manages the graphic pipeline for the warping.

Class that manages the graphic pipeline for the warping. It has the responsability to select the correct shader depending of camera id.

Definition at line 37 of file VulkanPipelineWarping.h.

Constructor & Destructor Documentation

◆ VulkanPipelineWarping()

VulkanPipelineWarping::VulkanPipelineWarping ( VulkanContext context,
VulkanRenderPass renderPass,
InputProvider inputP,
VulkanWrapper wraps,
int  inputCamID 
)

Constructor

Definition at line 24 of file VulkanPipelineWarping.cpp.

25{
26 this->wrapper = wraps;
27 this->context = context;
28 this->renderPass = renderPass;
29 this->colorAttachmentNb = 3;
30 this->inputId = inputCamId;
31 this->subPass = 2 * inputCamId + 0;
32
33 bufferController = std::make_unique<BuffersControllerWarping>(context, renderPass, this, inputP, wraps, inputCamId);
34
35
36 auto activation = wrapper->getCameraActivation();
37 for (int i = 0; i <= inputCamId; i++) {
38 if (!activation[i]) {
39 inputCamId++;
40 this->inputId++;
41 }
42 }
43
44
45
46 auto streamParam = inputP->enumerateStreamsParameters()[inputCamId];
47 colorSampler = streamParam.colorSampler;
48 depthSampler = streamParam.depthSampler;
49
50
51}
std::unique_ptr< BuffersController > bufferController
VulkanRenderPass * renderPass
std::vector< bool > getCameraActivation()

Member Function Documentation

◆ cleanUp()

void VulkanPipelineWarping::cleanUp ( )
virtual

Clean up

Implements VulkanPipelineAbsract.

Definition at line 64 of file VulkanPipelineWarping.cpp.

65{
67 bufferController->cleanUp();
68 context->device.destroyPipeline(pipeline);
69 context->device.destroyPipelineLayout(pipelineLayout);
70
71}
vk::Device device
Definition: VulkanContext.h:87
vk::DescriptorSetLayout descriptorSetLayout
vk::PipelineLayout pipelineLayout

◆ createDescriptorSetLayout()

void VulkanPipelineWarping::createDescriptorSetLayout ( )
virtual

Create the descriptor set layout

Implements VulkanPipelineAbsract.

Definition at line 75 of file VulkanPipelineWarping.cpp.

76{
77 vk::DescriptorSetLayoutBinding depthSamplerLayoutBinding(
78 1, //binding
79 vk::DescriptorType::eCombinedImageSampler, //descriptor type
80 1, //descriptorCount
81 vk::ShaderStageFlagBits::eVertex | vk::ShaderStageFlagBits::eFragment, //stageFlags
82 &depthSampler //pimmutable sampler
83 );
84 vk::DescriptorSetLayoutBinding uboVertCamLayoutBinding(
85 2, //binding
86 vk::DescriptorType::eUniformBuffer, //descriptor type
87 1, //descriptorCount
88 vk::ShaderStageFlagBits::eVertex, //stageFlags
89 nullptr //pimmutable sampler
90 );
91 vk::DescriptorSetLayoutBinding uboVertLayoutBinding(
92 3, //binding
93 vk::DescriptorType::eUniformBuffer, //descriptor type
94 1, //descriptorCount
95 vk::ShaderStageFlagBits::eVertex, //stageFlags
96 nullptr //pimmutable sampler
97 );
98 vk::DescriptorSetLayoutBinding uboGeomLayoutBinding(
99 4, //binding
100 vk::DescriptorType::eUniformBuffer, //descriptor type
101 1, //descriptorCount
102 vk::ShaderStageFlagBits::eGeometry, //stageFlags
103 nullptr //pimmutable sampler
104 );
105 vk::DescriptorSetLayoutBinding uboFragLayoutBinding(
106 5, //binding
107 vk::DescriptorType::eUniformBuffer, //descriptor type
108 1, //descriptorCount
109 vk::ShaderStageFlagBits::eFragment, //stageFlags
110 nullptr //pimmutable sampler
111 );
112 vk::DescriptorSetLayoutBinding samplerLayoutBinding(
113 6,
114 vk::DescriptorType::eCombinedImageSampler,
115 1,
116 vk::ShaderStageFlagBits::eFragment,
117 &colorSampler
118 );
119
120 std::array<vk::DescriptorSetLayoutBinding, 6> bindings = { depthSamplerLayoutBinding, uboVertCamLayoutBinding,uboVertLayoutBinding, uboGeomLayoutBinding, uboFragLayoutBinding, samplerLayoutBinding };
121
122 vk::DescriptorSetLayoutCreateInfo layoutInfo(vk::DescriptorSetLayoutCreateFlags(), static_cast<uint32_t>(bindings.size()), bindings.data());
123
124 descriptorSetLayout = context->device.createDescriptorSetLayout(layoutInfo);
125
126}

◆ init()

void VulkanPipelineWarping::init ( )
virtual

Initialization

Implements VulkanPipelineAbsract.

Definition at line 52 of file VulkanPipelineWarping.cpp.

53{
54 //createRenderPass();
56 createGraphicsPipeline();
57
58 //for the buffer Controller
59 bufferController->init();
60
61
62}

◆ update()

void VulkanPipelineWarping::update ( std::span< InputProvider::StreamFrameInfo infos,
int  view 
)

Trigger the update in the buffers in BuffersControllerWarping object linked to this instance of VulkanPipelineWarping

Definition at line 128 of file VulkanPipelineWarping.cpp.

129{
130 bufferController->update(infos, view);
131}

The documentation for this class was generated from the following files: