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
53 HD_API
54 virtual bool IsSupported(
55 HdContainerDataSourceHandle const &rendererCreateArgs,
56 std::string *reasonWhyNot = nullptr) const;
57
71 HD_API
73 HdSceneIndexBaseRefPtr const &sceneIndex,
74 HdContainerDataSourceHandle const &rendererCreateArgs);
75
77
81 HD_API
83
87 HD_API
88 std::string GetDisplayName() const;
89
92
104 virtual bool IsSupported(
105 HdRendererCreateArgs const &rendererCreateArgs,
106 std::string *reasonWhyNot = nullptr) const = 0;
107
113 HD_API
115 HdRenderSettingsMap const &settingsMap = {});
124 virtual HdRenderDelegate *CreateRenderDelegate() = 0;
125
134 HD_API
135 virtual HdRenderDelegate *CreateRenderDelegate(
136 HdRenderSettingsMap const& settingsMap);
137
144 virtual void DeleteRenderDelegate(HdRenderDelegate *renderDelegate) = 0;
145
147
159 HD_API
160 virtual bool IsSupported(bool gpuEnabled = true) const;
161
162protected:
163 HdRendererPlugin() = default;
164 HD_API
165 ~HdRendererPlugin() override;
166
167 HD_API
168 virtual std::unique_ptr<HdRenderer> _CreateRenderer(
169 HdSceneIndexBaseRefPtr const &sceneIndex,
170 HdContainerDataSourceHandle const &rendererCreateArgs);
171
172 // Instantiates render delegate and uses "back-end" emulation.
173 HD_API
174 std::unique_ptr<HdRenderer> _CreateRendererFromRenderDelegate(
175 HdSceneIndexBaseRefPtr const &sceneIndex,
176 HdContainerDataSourceHandle const &rendererCreateArgs);
177
178private:
179 // This class doesn't require copy support.
180 HdRendererPlugin(const HdRendererPlugin &) = delete;
181 HdRendererPlugin &operator =(const HdRendererPlugin &) = delete;
182
183};
184
185
186PXR_NAMESPACE_CLOSE_SCOPE
187
188#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.
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.
HD_API HdPluginRendererUniqueHandle CreateRenderer(HdSceneIndexBaseRefPtr const &sceneIndex, HdContainerDataSourceHandle const &rendererCreateArgs)
Create renderer through the plugin and wrap it in a handle that keeps this plugin alive until the ren...
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...
virtual bool IsSupported(HdRendererCreateArgs const &rendererCreateArgs, std::string *reasonWhyNot=nullptr) const =0
Returns true if this renderer plugin is supported in the running process and false if not.
virtual HD_API bool IsSupported(bool gpuEnabled=true) const
virtual HD_API bool IsSupported(HdContainerDataSourceHandle const &rendererCreateArgs, std::string *reasonWhyNot=nullptr) const
Returns true if this renderer plugin is supported in the running process and false if not.
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:54
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
HdRendererCreateArgs contains members indicating the resources available when creating a renderer plu...