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;
23
36{
37public:
38
41
53 HD_API
54 virtual
56 const HdRendererCreateArgsSchema &rendererCreateArgs,
57 std::string *reasonWhyNot = nullptr) const;
58
77 HD_API
78 virtual
79 HdContainerDataSourceHandle GetSceneIndexCreateArgs() const;
80
94 HD_API
96 HdSceneIndexBaseRefPtr const &sceneIndex,
97 const HdRendererCreateArgsSchema &rendererCreateArgs);
98
100
104 HD_API
106
110 HD_API
111 std::string GetDisplayName() const;
112
115
129 virtual bool IsSupported(
130 HdRendererCreateArgs const &rendererCreateArgs,
131 std::string *reasonWhyNot = nullptr) const = 0;
132
138 HD_API
140 HdRenderSettingsMap const &settingsMap = {});
149 virtual HdRenderDelegate *CreateRenderDelegate() = 0;
150
159 HD_API
160 virtual HdRenderDelegate *CreateRenderDelegate(
161 HdRenderSettingsMap const& settingsMap);
162
169 virtual void DeleteRenderDelegate(HdRenderDelegate *renderDelegate) = 0;
170
172
173protected:
174 HdRendererPlugin() = default;
175 HD_API
176 ~HdRendererPlugin() override;
177
178 HD_API
179 virtual std::unique_ptr<HdRenderer> _CreateRenderer(
180 HdSceneIndexBaseRefPtr const &sceneIndex,
181 const HdRendererCreateArgsSchema &rendererCreateArgs);
182
183 // Instantiates render delegate and uses "back-end" emulation.
184 HD_API
185 std::unique_ptr<HdRenderer> _CreateRendererFromRenderDelegate(
186 HdSceneIndexBaseRefPtr const &sceneIndex,
187 const HdRendererCreateArgsSchema &rendererCreateArgs);
188
189private:
190 // This class doesn't require copy support.
191 HdRendererPlugin(const HdRendererPlugin &) = delete;
192 HdRendererPlugin &operator =(const HdRendererPlugin &) = delete;
193
194};
195
196
197PXR_NAMESPACE_CLOSE_SCOPE
198
199#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.
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...
virtual HD_API bool IsSupported(const HdRendererCreateArgsSchema &rendererCreateArgs, std::string *reasonWhyNot=nullptr) const
Returns true if this renderer plugin is supported in the running process and false if not.
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 bool IsSupported(HdRendererCreateArgs const &rendererCreateArgs, std::string *reasonWhyNot=nullptr) const =0
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