Loading...
Searching...
No Matches
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
15PXR_NAMESPACE_OPEN_SCOPE
16
17class HdRenderer;
22
35{
36public:
37
40
52 HD_API
53 virtual
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
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
155protected:
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
171private:
172 // This class doesn't require copy support.
173 HdRendererPlugin(const HdRendererPlugin &) = delete;
174 HdRendererPlugin &operator =(const HdRendererPlugin &) = delete;
175};
176
177
178PXR_NAMESPACE_CLOSE_SCOPE
179
180#endif // PXR_IMAGING_HD_RENDERER_PLUGIN_H
A (movable) handle for a render delegate that was created using a a plugin.
A handle for a renderer that was created by a renderer plugin.
Arguments to HdRendererPlugin::IsSupported and CreateRenderer.
A Hydra renderer.
Definition renderer.h:28
This class defines a renderer plugin interface for Hydra.
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.
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 std::string GetDisplayName() const
Look-up display name in plugin registry.
virtual HD_API HdContainerDataSourceHandle GetSceneIndexCreateArgs() const
Arguments that an application should pass as create arguments to scene indices so that they can be co...
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...
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...
virtual HD_API HdRenderDelegate * CreateRenderDelegate(HdRenderSettingsMap const &settingsMap)
Clients should use CreateDelegate since this method will eventually become protected.
virtual HdRenderDelegate * CreateRenderDelegate()=0
Clients should use CreateDelegate since this method will eventually become protected,...
Abstract interface to scene data.
Definition sceneIndex.h:55
Base class for all hydra plugin classes.
Definition pluginBase.h:23
Token for efficient comparison, assignment, and hashing of known strings.
Definition token.h:71
#define TF_DECLARE_REF_PTRS(type)
Define standard ref pointer types.
Definition declarePtrs.h:58