NAP
renderlayer.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 "vulkan/vulkan_core.h"
9 #include "rtti/typeinfo.h"
10 
11 // External Includes
12 #include <nap/resource.h>
13 #include <nap/resourceptr.h>
14 #include <string>
15 #include <vector>
16 
17 namespace nap
18 {
19  // Forward declares
20  class Core;
21  class RenderService;
22 
23  namespace layer
24  {
25  namespace rank
26  {
27  constexpr int invalid = -1;
28  }
29  }
30 
43  class NAPAPI RenderLayer : public Resource
44  {
45  RTTI_ENABLE(Resource)
46  public:
50  const std::string& getName() const { return mName; }
51 
52  std::string mName;
53 
54  private:
55  RenderService* mRenderService = nullptr;
56  };
57 
58 
66  class NAPAPI RenderChain : public Resource
67  {
68  friend class RenderService;
69  RTTI_ENABLE(Resource)
70  public:
71  RenderChain(nap::Core& core);
72 
73  // Invalid rank
74  static constexpr int invalidRank = -1;
75 
80  virtual bool init(utility::ErrorState& errorState) override;
81 
85  virtual void onDestroy() override;
86 
87  std::vector<rtti::ObjectPtr<RenderLayer>> mLayers;
88 
89  private:
90  RenderService* mRenderService = nullptr;
91  std::unordered_map<const RenderLayer*, int> mRankMap;
92  };
93 }
nap::RenderLayer::getName
const std::string & getName() const
Definition: renderlayer.h:50
nap::RenderChain::mLayers
std::vector< rtti::ObjectPtr< RenderLayer > > mLayers
Property: 'Layers' The render layers in ranked order.
Definition: renderlayer.h:87
nap::RenderLayer::mName
std::string mName
Property: 'Name' The render layer name.
Definition: renderlayer.h:52
nap::utility::ErrorState
Definition: errorstate.h:19
nap::RenderLayer
Definition: renderlayer.h:43
nap::RenderService
Definition: renderservice.h:275
nap::Core
Definition: core.h:82
nap::RenderChain
Definition: renderlayer.h:66
nap
Definition: templateapp.h:17
nap::Resource
Definition: resource.h:19
nap::layer::rank::invalid
constexpr int invalid
Layer not registered.
Definition: renderlayer.h:27