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 #include "texturelink.h"
13 
14 // External Includes
15 #include <vulkan/vulkan_core.h>
16 
17 namespace nap
18 {
19  // Forward Declares
20  class RenderService;
21  class Core;
22 
29  class NAPAPI SnapshotRenderTarget : public IRenderTarget
30  {
31  public:
37 
42 
49  bool init(Snapshot* snapshot, utility::ErrorState& errorState);
50 
55  virtual void beginRendering() override;
56 
60  virtual void endRendering() override;
61 
65  virtual const glm::ivec2 getBufferSize() const override;
66 
71  virtual void setClearColor(const RGBAColorFloat& color) override { mClearColor = color; }
72 
76  virtual const RGBAColorFloat& getClearColor() const override { return mClearColor; }
77 
81  virtual ECullWindingOrder getWindingOrder() const override { return ECullWindingOrder::Clockwise; }
82 
86  virtual VkRenderPass getRenderPass() const override { return mRenderPass; }
87 
91  virtual VkFormat getColorFormat() const override;
92 
96  virtual VkFormat getDepthFormat() const override;
97 
101  virtual VkSampleCountFlagBits getSampleCount() const override;
102 
106  virtual bool getSampleShadingEnabled() const override;
107 
111  virtual VkImageLayout getFinalLayout() const override { return VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; }
112 
116  void setCellIndex(uint32_t cellIndex) { mCellIndex = cellIndex; }
117 
118 
119  private:
120  RenderService* mRenderService = nullptr;
121  Snapshot* mSnapshot = nullptr;
122 
123  std::vector<VkFramebuffer> mFramebuffers;
124  glm::uvec2 mSize = { 0, 0 };
125 
126  bool mSampleShading = true;
127  RGBAColorFloat mClearColor = { 0.0f, 0.0f, 0.0f, 0.0f };
128 
129  VkSampleCountFlagBits mRasterizationSamples = VK_SAMPLE_COUNT_1_BIT;
130  VkFormat mFormat = VK_FORMAT_R8G8B8A8_UNORM;
131  VkRenderPass mRenderPass = VK_NULL_HANDLE;
132  ImageData mDepthImage;
133  ImageData mColorImage;
134  Texture2DTargetLink mTextureLink;
135 
136  uint32_t mCellIndex = 0;
137  };
138 }
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:76
nap::utility::ErrorState
Definition: errorstate.h:19
nap::SnapshotRenderTarget::getWindingOrder
virtual ECullWindingOrder getWindingOrder() const override
Definition: snapshotrendertarget.h:81
nap::Snapshot
Definition: snapshot.h:28
nap::SnapshotRenderTarget::setCellIndex
void setCellIndex(uint32_t cellIndex)
Definition: snapshotrendertarget.h:116
nap::SnapshotRenderTarget::getRenderPass
virtual VkRenderPass getRenderPass() const override
Definition: snapshotrendertarget.h:86
nap::RenderService
Definition: renderservice.h:198
nap::Core
Definition: core.h:82
nap::SnapshotRenderTarget::getFinalLayout
virtual VkImageLayout getFinalLayout() const override
Definition: snapshotrendertarget.h:111
nap::SnapshotRenderTarget
Definition: snapshotrendertarget.h:29
nap::RGBAColorFloat
RGBAColor< float > RGBAColorFloat
Definition: color.h:580
nap::SnapshotRenderTarget::setClearColor
virtual void setClearColor(const RGBAColorFloat &color) override
Definition: snapshotrendertarget.h:71
nap
Definition: templateapp.h:17