Loading...
Searching...
No Matches
renderTask.h
1//
2// Copyright 2016 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_HDX_RENDER_TASK_H
8#define PXR_IMAGING_HDX_RENDER_TASK_H
9
10#include "pxr/pxr.h"
11#include "pxr/imaging/hd/renderIndex.h"
12#include "pxr/imaging/hdx/api.h"
13#include "pxr/imaging/hdx/version.h"
14#include "pxr/imaging/hdx/task.h"
15#include "pxr/imaging/hdx/renderSetupTask.h" // for short-term compatibility.
16#include "pxr/imaging/hdSt/renderPassState.h"
17
18#include <memory>
19
20PXR_NAMESPACE_OPEN_SCOPE
21
22
23class HdSceneDelegate;
25
26using HdRenderPassStateSharedPtr = std::shared_ptr<class HdRenderPassState>;
27using HdRenderPassSharedPtr = std::shared_ptr<class HdRenderPass>;
28using HdxRenderSetupTaskSharedPtr = std::shared_ptr<class HdxRenderSetupTask>;
29
49class HdxRenderTask : public HdxTask
50{
51public:
53
54 HDX_API
55 HdxRenderTask(HdSceneDelegate* delegate, SdfPath const& id);
56
57 HDX_API
58 ~HdxRenderTask() override;
59
61 HDX_API
62 bool IsConverged() const override;
63
65 HDX_API
66 void Prepare(HdTaskContext* ctx,
67 HdRenderIndex* renderIndex) override;
68
70 HDX_API
71 void Execute(HdTaskContext* ctx) override;
72
74 HDX_API
75 const TfTokenVector &GetRenderTags() const override;
76
77protected:
79 HDX_API
80 void _Sync(HdSceneDelegate* delegate,
81 HdTaskContext* ctx,
82 HdDirtyBits* dirtyBits) override;
83
84 HDX_API
85 HdRenderPassStateSharedPtr _GetRenderPassState(HdTaskContext *ctx) const;
86
87 // XXX: Storm specific API
88 // While HdDrawItem is currently a core-Hydra concept, it'll be moved
89 // to Storm. Until then, allow querying the render pass to know if there's
90 // draw submission work.
91 //
92 // Returns whether the render pass has any draw items to submit.
93 // For non-Storm backends, this returns true.
94 // When using with Storm tasks, make sure to call it after
95 // HdxRenderTask::Prepare().
96 HDX_API
97 bool _HasDrawItems() const;
98
99 // XXX: Storm specific API
100 // Binds the selection highlight buffers published by HdxSelectionTask onto
101 // the given render pass shader.
102 HDX_API
103 void _SetHdStSelectionBindings(
104 HdTaskContext* ctx,
105 const HdStRenderPassShaderSharedPtr& renderPassShader);
106
107private:
108 HdRenderPassSharedPtr _pass;
109 TfTokenVector _renderTags;
110
111 // Optional internal render setup task, for params unpacking.
112 HdxRenderSetupTaskSharedPtr _setupTask;
113
114 // XXX: Storm specific API
115 // Setup additional state that HdStRenderPassState requires.
116 void _SetHdStRenderPassState(HdTaskContext *ctx,
117 HdStRenderPassState *renderPassState);
118
119 // Inspect the AOV bindings to determine if any of them need to be cleared.
120 bool _NeedToClearAovs(HdRenderPassStateSharedPtr const &renderPassState)
121 const;
122
123 HdxRenderTask() = delete;
124 HdxRenderTask(const HdxRenderTask &) = delete;
125 HdxRenderTask &operator =(const HdxRenderTask &) = delete;
126};
127
128
129PXR_NAMESPACE_CLOSE_SCOPE
130
131#endif //PXR_IMAGING_HDX_RENDER_TASK_H
The render index is part of the Hydra 1.0 API and is only used for emulation purposes so that HdScene...
Adapter class providing data exchange with the client scene graph.
A set of rendering parameters used among render passes.
A task for rendering geometry to pixels.
Definition renderTask.h:50
HDX_API const TfTokenVector & GetRenderTags() const override
Collect Render Tags used by the task.
HDX_API void _Sync(HdSceneDelegate *delegate, HdTaskContext *ctx, HdDirtyBits *dirtyBits) override
Sync the render pass resources.
HDX_API void Prepare(HdTaskContext *ctx, HdRenderIndex *renderIndex) override
Prepare the tasks resources.
HDX_API void Execute(HdTaskContext *ctx) override
Execute render pass task.
HDX_API bool IsConverged() const override
Hooks for progressive rendering (delegated to renderpasses).
Base class for (some) tasks in Hdx that provides common progressive rendering and Hgi functionality.
Definition task.h:28
A path value used to locate objects in layers or scenegraphs.
Definition path.h:281
RenderTask parameters (renderpass state).
std::vector< TfToken > TfTokenVector
Convenience types.
Definition token.h:489