HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
renderDelegate.h
Go to the documentation of this file.
1 //
2 // Copyright 2017 Pixar
3 //
4 // Licensed under the terms set forth in the LICENSE.txt file available at
5 // https://openusd.org/license.
6 #ifndef PXR_IMAGING_HD_ST_RENDER_DELEGATE_H
7 #define PXR_IMAGING_HD_ST_RENDER_DELEGATE_H
8 
9 #include "pxr/pxr.h"
10 #include "pxr/imaging/hdSt/api.h"
12 
13 #include <memory>
14 #include <mutex>
15 
17 
18 class Hgi;
19 class HdStRenderParam;
21  std::unique_ptr<class HdSt_DrawItemsCache>;
22 using HdStDrawItemsCachePtr = HdSt_DrawItemsCache *;
23 
25  std::shared_ptr<class HdStResourceRegistry>;
26 
28 
29 ///
30 /// HdStRenderDelegate
31 ///
32 /// The Storm Render Delegate provides a rasterizer renderer to draw the scene.
33 /// While it currently has some ties to GL, the goal is to use Hgi to allow
34 /// it to be graphics API agnostic.
35 ///
37 {
38 public:
39  HDST_API
41  HDST_API
42  HdStRenderDelegate(HdRenderSettingsMap const& settingsMap);
43 
44  HDST_API
45  ~HdStRenderDelegate() override;
46 
47  // ---------------------------------------------------------------------- //
48  /// \name HdRenderDelegate virtual API
49  // ---------------------------------------------------------------------- //
50 
51  HDST_API
52  void SetDrivers(HdDriverVector const& drivers) override;
53 
54  HDST_API
55  HdRenderParam *GetRenderParam() const override;
56 
57  HDST_API
58  const TfTokenVector &GetSupportedRprimTypes() const override;
59  HDST_API
60  const TfTokenVector &GetSupportedSprimTypes() const override;
61  HDST_API
62  const TfTokenVector &GetSupportedBprimTypes() const override;
63  HDST_API
65 
66  HDST_API
68  HdRprimCollection const& collection) override;
69  HDST_API
71 
72  HDST_API
74  SdfPath const& id) override;
75 
76  HDST_API
77  void DestroyInstancer(HdInstancer *instancer) override;
78 
79  HDST_API
80  HdRprim *CreateRprim(TfToken const& typeId,
81  SdfPath const& rprimId) override;
82  HDST_API
83  void DestroyRprim(HdRprim *rPrim) override;
84 
85  HDST_API
86  HdSprim *CreateSprim(TfToken const& typeId,
87  SdfPath const& sprimId) override;
88  HDST_API
89  HdSprim *CreateFallbackSprim(TfToken const& typeId) override;
90  HDST_API
91  void DestroySprim(HdSprim *sPrim) override;
92 
93  HDST_API
94  HdBprim *CreateBprim(TfToken const& typeId,
95  SdfPath const& bprimId) override;
96  HDST_API
97  HdBprim *CreateFallbackBprim(TfToken const& typeId) override;
98  HDST_API
99  void DestroyBprim(HdBprim *bPrim) override;
100 
101  HDST_API
102  void CommitResources(HdChangeTracker *tracker) override;
103 
104  HDST_API
105  TfTokenVector GetMaterialRenderContexts() const override;
106 
107  HDST_API
108  TfTokenVector GetShaderSourceTypes() const override;
109 
110  HDST_API
111  bool IsPrimvarFilteringNeeded() const override;
112 
113  HDST_API
115  GetRenderSettingDescriptors() const override;
116 
117  HDST_API
118  VtDictionary GetRenderStats() const override;
119 
120  HDST_API
122  GetDefaultAovDescriptor(TfToken const& name) const override;
123 
124  /// Flag for the HdxTaskControllerSceneIndex.
125  ///
126  /// The HdxTaskControllerSceneIndex requires a different configuration
127  /// for Storm than any other render delegate.
128  ///
129  HDST_API
130  bool RequiresStormTasks() const override;
131 
132  // ---------------------------------------------------------------------- //
133  /// \name Misc public API
134  // ---------------------------------------------------------------------- //
135 
136  // Returns whether or not HdStRenderDelegate can run on the current
137  // hardware.
138  HDST_API
139  static bool IsSupported(
140  HdRendererCreateArgs const& rendererCreateArgs = {});
141 
142  // Returns a raw pointer to the draw items cache owned (solely) by the
143  // render delegate.
144  HDST_API
146 
147  // Returns Hydra graphics interface
148  HDST_API
149  Hgi* GetHgi();
150 
151  HDST_API
152  static
154 
155 private:
156  void _ApplyTextureSettings();
157  HdSprim *_CreateFallbackMaterialPrim();
158 
159  HdStRenderDelegate(const HdStRenderDelegate &) = delete;
160  HdStRenderDelegate &operator =(const HdStRenderDelegate &) = delete;
161 
162  static const TfTokenVector SUPPORTED_RPRIM_TYPES;
163  static const TfTokenVector SUPPORTED_SPRIM_TYPES;
164 
165  // Resource registry used in this render delegate
166  HdStResourceRegistrySharedPtr _resourceRegistry;
167 
168  HdRenderSettingDescriptorList _settingDescriptors;
169 
170  Hgi* _hgi;
171 
172  std::unique_ptr<HdStRenderParam> _renderParam;
173 
174  HdStDrawItemsCacheUniquePtr _drawItemsCache;
175 };
176 
177 
179 
180 #endif // PXR_IMAGING_HD_ST_RENDER_DELEGATE_H
HDST_API Hgi * GetHgi()
std::shared_ptr< class HdRenderPassState > HdRenderPassStateSharedPtr
Definition: engine.h:25
HDST_API bool RequiresStormTasks() const override
HDST_API void CommitResources(HdChangeTracker *tracker) override
HDST_API VtDictionary GetRenderStats() const override
HDST_API TfTokenVector GetShaderSourceTypes() const override
std::shared_ptr< class HdRenderPass > HdRenderPassSharedPtr
Definition: engine.h:24
std::shared_ptr< class HdResourceRegistry > HdResourceRegistrySharedPtr
HDST_API const TfTokenVector & GetSupportedRprimTypes() const override
#define PXR_NAMESPACE_OPEN_SCOPE
Definition: pxr.h:73
HDST_API HdRprim * CreateRprim(TfToken const &typeId, SdfPath const &rprimId) override
HDST_API HdSprim * CreateSprim(TfToken const &typeId, SdfPath const &sprimId) override
Definition: token.h:70
std::vector< HdDriver * > HdDriverVector
HDST_API const TfTokenVector & GetSupportedBprimTypes() const override
static HDST_API const HdRenderDelegateInfo & GetRenderDelegateInfo()
Definition: rprim.h:37
HDST_API HdStDrawItemsCachePtr GetDrawItemsCache() const
HDST_API const TfTokenVector & GetSupportedSprimTypes() const override
HDST_API HdRenderParam * GetRenderParam() const override
HDST_API void SetDrivers(HdDriverVector const &drivers) override
HDST_API HdSprim * CreateFallbackSprim(TfToken const &typeId) override
HDST_API void DestroyBprim(HdBprim *bPrim) override
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440
GLuint const GLchar * name
Definition: glcorearb.h:786
std::unique_ptr< class HdSt_DrawItemsCache > HdStDrawItemsCacheUniquePtr
HDST_API HdStRenderDelegate()
HDST_API HdRenderSettingDescriptorList GetRenderSettingDescriptors() const override
Definition: path.h:280
HDST_API HdInstancer * CreateInstancer(HdSceneDelegate *delegate, SdfPath const &id) override
HDST_API HdAovDescriptor GetDefaultAovDescriptor(TfToken const &name) const override
Definition: sprim.h:34
HDST_API HdRenderPassStateSharedPtr CreateRenderPassState() const override
Definition: hgi.h:94
HDST_API ~HdStRenderDelegate() override
HDST_API HdResourceRegistrySharedPtr GetResourceRegistry() const override
std::vector< struct HdRenderSettingDescriptor > HdRenderSettingDescriptorList
HDST_API void DestroyRprim(HdRprim *rPrim) override
static HDST_API bool IsSupported(HdRendererCreateArgs const &rendererCreateArgs={})
#define HDST_API
Definition: api.h:23
GLuint index
Definition: glcorearb.h:786
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
Definition: bprim.h:39
HDST_API void DestroySprim(HdSprim *sPrim) override
HDST_API HdBprim * CreateBprim(TfToken const &typeId, SdfPath const &bprimId) override
HdSt_DrawItemsCache * HdStDrawItemsCachePtr
HDST_API TfTokenVector GetMaterialRenderContexts() const override
HDST_API HdRenderPassSharedPtr CreateRenderPass(HdRenderIndex *index, HdRprimCollection const &collection) override
std::shared_ptr< class HdStResourceRegistry > HdStResourceRegistrySharedPtr
Definition: commandBuffer.h:30
HDST_API void DestroyInstancer(HdInstancer *instancer) override
HDST_API HdBprim * CreateFallbackBprim(TfToken const &typeId) override
HDST_API bool IsPrimvarFilteringNeeded() const override