point_light_system.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #pragma once
  2. // CORAL
  3. #include "coral_camera.h"
  4. #include "coral_device.h"
  5. #include "coral_pipeline.h"
  6. #include "coral_gameobject.h"
  7. #include "coral_frame_info.h"
  8. #include "coral_descriptors.h"
  9. // STD
  10. #include <memory>
  11. #include <vector>
  12. namespace coral_3d
  13. {
  14. class point_light_system final
  15. {
  16. public:
  17. point_light_system(coral_device& device, VkRenderPass render_pass, std::vector<VkDescriptorSetLayout>& desc_set_layouts);
  18. ~point_light_system();
  19. point_light_system(const point_light_system&) = delete;
  20. point_light_system& operator=(const point_light_system&) = delete;
  21. void update(FrameInfo& frame_info, GlobalUBO& ubo);
  22. void render(FrameInfo& frame_info);
  23. VkPipelineLayout pipeline_layout() const { return pipeline_layout_; }
  24. VkPipeline pipeline() const { return pipeline_->pipeline(); }
  25. private:
  26. void create_pipeline_layout(coral_device &device, std::vector<VkDescriptorSetLayout>& desc_set_layouts);
  27. void create_pipeline(VkRenderPass render_pass);
  28. coral_device& device_;
  29. std::unique_ptr<coral_pipeline> pipeline_;
  30. VkPipelineLayout pipeline_layout_;
  31. };
  32. }