46 lines
980 B
C++
Executable file
46 lines
980 B
C++
Executable file
#pragma once
|
|
|
|
#include <vulkan/vulkan.h>
|
|
|
|
#include "rendercollection.h"
|
|
|
|
class Renderer;
|
|
class World;
|
|
struct RenderTarget;
|
|
class Camera;
|
|
|
|
class WorldPass {
|
|
public:
|
|
WorldPass(Renderer& renderer);
|
|
~WorldPass();
|
|
|
|
void render(VkCommandBuffer commandBuffer, RenderCollection& collection, RenderTarget* target);
|
|
|
|
VkRenderPass getRenderPass() const {
|
|
return renderPass_;
|
|
}
|
|
|
|
private:
|
|
void createRenderPass();
|
|
void createDescriptorSetLayout();
|
|
void createPipeline();
|
|
void createUniformBuffers();
|
|
void createDescriptorSet();
|
|
|
|
VkRenderPass renderPass_ = nullptr;
|
|
|
|
VkDescriptorSetLayout setLayout_ = nullptr;
|
|
|
|
VkPipelineLayout pipelineLayout_ = nullptr;
|
|
VkPipeline pipeline_ = nullptr;
|
|
|
|
VkDeviceMemory sceneMemory_ = nullptr;
|
|
VkBuffer sceneBuffer_ = nullptr;
|
|
|
|
VkDeviceMemory lightMemory_ = nullptr;
|
|
VkBuffer lightBuffer_ = nullptr;
|
|
|
|
VkDescriptorSet descriptorSet_ = nullptr;
|
|
|
|
Renderer& renderer_;
|
|
};
|