NAP
snapshotrendertarget.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // Local Includes
8 #include "irendertarget.h"
9 #include "renderutils.h"
10 #include "imagedata.h"
11 #include "snapshot.h"
12 
13 // External Includes
14 #include <vulkan/vulkan_core.h>
15 
16 namespace nap
17 {
18  // Forward Declares
19  class RenderService;
20  class Core;
21 
28  class NAPAPI SnapshotRenderTarget : public IRenderTarget
29  {
30  public:
36 
41 
48  bool init(Snapshot* snapshot, utility::ErrorState& errorState);
49 
54  virtual void beginRendering() override;
55 
59  virtual void endRendering() override;
60 
64  virtual const glm::ivec2 getBufferSize() const override;
65 
70  virtual void setClearColor(const RGBAColorFloat& color) override { mClearColor = color; }
71 
75  virtual const RGBAColorFloat& getClearColor() const override { return mClearColor; }
76 
80  virtual ECullWindingOrder getWindingOrder() const override { return ECullWindingOrder::Clockwise; }
81 
85  virtual VkRenderPass getRenderPass() const override { return mRenderPass; }
86 
90  virtual VkFormat getColorFormat() const override;
91 
95  virtual VkFormat getDepthFormat() const override;
96 
100  virtual VkSampleCountFlagBits getSampleCount() const override;
101 
105  virtual bool getSampleShadingEnabled() const override;
106 
110  void setCellIndex(uint32_t cellIndex) { mCellIndex = cellIndex; }
111 
112 
113  private:
114  RenderService* mRenderService = nullptr;
115  Snapshot* mSnapshot = nullptr;
116 
117  std::vector<VkFramebuffer> mFramebuffers;
118  glm::u32vec2 mSize = { 0, 0 };
119 
120  bool mSampleShading = true;
121  RGBAColorFloat mClearColor = { 0.0f, 0.0f, 0.0f, 0.0f };
122 
123  VkSampleCountFlagBits mRasterizationSamples = VK_SAMPLE_COUNT_1_BIT;
124  VkFormat mFormat = VK_FORMAT_R8G8B8A8_UNORM;
125  VkRenderPass mRenderPass = VK_NULL_HANDLE;
126  ImageData mDepthImage;
127  ImageData mColorImage;
128 
129  uint32_t mCellIndex = 0;
130  };
131 }
nap::ECullWindingOrder::Clockwise
@ Clockwise
nap::IRenderTarget
Definition: irendertarget.h:21
nap::RGBAColor< float >
nap::ECullWindingOrder
ECullWindingOrder
Definition: materialcommon.h:30
nap::SnapshotRenderTarget::getClearColor
virtual const RGBAColorFloat & getClearColor() const override
Definition: snapshotrendertarget.h:75
nap::utility::ErrorState
Definition: errorstate.h:19
nap::SnapshotRenderTarget::getWindingOrder
virtual ECullWindingOrder getWindingOrder() const override
Definition: snapshotrendertarget.h:80
nap::Snapshot
Definition: snapshot.h:28
nap::SnapshotRenderTarget::setCellIndex
void setCellIndex(uint32_t cellIndex)
Definition: snapshotrendertarget.h:110
nap::SnapshotRenderTarget::getRenderPass
virtual VkRenderPass getRenderPass() const override
Definition: snapshotrendertarget.h:85
nap::RenderService
Definition: renderservice.h:275
nap::Core
Definition: core.h:82
nap::SnapshotRenderTarget
Definition: snapshotrendertarget.h:28
nap::RGBAColorFloat
RGBAColor< float > RGBAColorFloat
Definition: color.h:580
nap::SnapshotRenderTarget::setClearColor
virtual void setClearColor(const RGBAColorFloat &color) override
Definition: snapshotrendertarget.h:70
nap
Definition: templateapp.h:17