rendererPlugin.h
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 //
7 #ifndef PXR_IMAGING_HD_RENDERER_PLUGIN_H
8 #define PXR_IMAGING_HD_RENDERER_PLUGIN_H
9 
10 #include "pxr/pxr.h"
11 #include "pxr/imaging/hd/api.h"
12 #include "pxr/imaging/hf/pluginBase.h"
13 #include "pxr/imaging/hd/renderDelegate.h"
14 
15 PXR_NAMESPACE_OPEN_SCOPE
16 
17 class HdRenderer;
22 
35 {
36 public:
37 
40 
52  HD_API
53  virtual
54  bool IsSupported(
55  const HdRendererCreateArgsSchema &rendererCreateArgs,
56  std::string *reasonWhyNot = nullptr) const = 0;
57 
76  HD_API
77  virtual
78  HdContainerDataSourceHandle GetSceneIndexCreateArgs() const;
79 
93  HD_API
95  HdSceneIndexBaseRefPtr const &sceneIndex,
96  const HdRendererCreateArgsSchema &rendererCreateArgs);
97 
99 
103  HD_API
104  TfToken GetPluginId() const;
105 
109  HD_API
110  std::string GetDisplayName() const;
111 
114 
120  HD_API
122  HdRenderSettingsMap const &settingsMap = {});
131  virtual HdRenderDelegate *CreateRenderDelegate() = 0;
132 
141  HD_API
142  virtual HdRenderDelegate *CreateRenderDelegate(
143  HdRenderSettingsMap const& settingsMap);
144 
151  virtual void DeleteRenderDelegate(HdRenderDelegate *renderDelegate) = 0;
152 
154 
155 protected:
156  HdRendererPlugin() = default;
157  HD_API
158  ~HdRendererPlugin() override;
159 
160  HD_API
161  virtual std::unique_ptr<HdRenderer> _CreateRenderer(
162  HdSceneIndexBaseRefPtr const &sceneIndex,
163  const HdRendererCreateArgsSchema &rendererCreateArgs);
164 
165  // Instantiates render delegate and uses "back-end" emulation.
166  HD_API
167  std::unique_ptr<HdRenderer> _CreateRendererFromRenderDelegate(
168  HdSceneIndexBaseRefPtr const &sceneIndex,
169  const HdRendererCreateArgsSchema &rendererCreateArgs);
170 
171 private:
172  // This class doesn't require copy support.
173  HdRendererPlugin(const HdRendererPlugin &) = delete;
174  HdRendererPlugin &operator =(const HdRendererPlugin &) = delete;
175 };
176 
177 
178 PXR_NAMESPACE_CLOSE_SCOPE
179 
180 #endif // PXR_IMAGING_HD_RENDERER_PLUGIN_H
HD_API TfToken GetPluginId() const
Look-up plugin id in plugin registry.
virtual void DeleteRenderDelegate(HdRenderDelegate *renderDelegate)=0
Clients should use CreateDelegate since this method will eventually become protected.
This class defines a renderer plugin interface for Hydra.
A (movable) handle for a render delegate that was created using a a plugin.
virtual HD_API HdContainerDataSourceHandle GetSceneIndexCreateArgs() const
Arguments that an application should pass as create arguments to scene indices so that they can be co...
virtual HD_API bool IsSupported(const HdRendererCreateArgsSchema &rendererCreateArgs, std::string *reasonWhyNot=nullptr) const =0
Returns true if this renderer plugin is supported in the running process and false if not.
HD_API HdPluginRendererUniqueHandle CreateRenderer(HdSceneIndexBaseRefPtr const &sceneIndex, const HdRendererCreateArgsSchema &rendererCreateArgs)
Create renderer through the plugin and wrap it in a handle that keeps this plugin alive until the ren...
Base class for all hydra plugin classes.
Definition: pluginBase.h:22
A Hydra renderer.
Definition: renderer.h:27
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:80
Abstract interface to scene data.
Definition: sceneIndex.h:54
Arguments to HdRendererPlugin::IsSupported and CreateRenderer.
HD_API std::string GetDisplayName() const
Look-up display name in plugin registry.
HD_API HdPluginRenderDelegateUniqueHandle CreateDelegate(HdRenderSettingsMap const &settingsMap={})
Create a render delegate through the plugin and wrap it in a handle that keeps this plugin alive unti...
A handle for a renderer that was created by a renderer plugin.
#define TF_DECLARE_REF_PTRS(type)
Define standard ref pointer types.
Definition: declarePtrs.h:58
virtual HdRenderDelegate * CreateRenderDelegate()=0
Clients should use CreateDelegate since this method will eventually become protected,...