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/hdx/api.h"
12#include "pxr/imaging/hdx/version.h"
13#include "pxr/imaging/hdx/task.h"
14#include "pxr/imaging/hdx/renderSetupTask.h" // for short-term compatibility.
15#include "pxr/imaging/hdSt/renderPassState.h"
16
17#include <memory>
18
19PXR_NAMESPACE_OPEN_SCOPE
20
21
22class HdSceneDelegate;
24
25using HdRenderPassStateSharedPtr = std::shared_ptr<class HdRenderPassState>;
26using HdRenderPassSharedPtr = std::shared_ptr<class HdRenderPass>;
27using HdxRenderSetupTaskSharedPtr = std::shared_ptr<class HdxRenderSetupTask>;
28
48class HdxRenderTask : public HdxTask
49{
50public:
52
53 HDX_API
54 HdxRenderTask(HdSceneDelegate* delegate, SdfPath const& id);
55
56 HDX_API
57 ~HdxRenderTask() override;
58
60 HDX_API
61 bool IsConverged() const override;
62
64 HDX_API
65 void Prepare(HdTaskContext* ctx,
66 HdRenderIndex* renderIndex) override;
67
69 HDX_API
70 void Execute(HdTaskContext* ctx) override;
71
73 HDX_API
74 const TfTokenVector &GetRenderTags() const override;
75
76protected:
78 HDX_API
79 void _Sync(HdSceneDelegate* delegate,
80 HdTaskContext* ctx,
81 HdDirtyBits* dirtyBits) override;
82
83 HDX_API
84 HdRenderPassStateSharedPtr _GetRenderPassState(HdTaskContext *ctx) const;
85
86 // XXX: Storm specific API
87 // While HdDrawItem is currently a core-Hydra concept, it'll be moved
88 // to Storm. Until then, allow querying the render pass to know if there's
89 // draw submission work.
90
91 // Returns whether the render pass has any draw items to submit.
92 // For non-Storm backends, this returns true.
93 // When using with Storm tasks, make sure to call it after
94 // HdxRenderTask::Prepare().
95 HDX_API
96 bool _HasDrawItems() const;
97
98private:
99 HdRenderPassSharedPtr _pass;
100 TfTokenVector _renderTags;
101
102 // Optional internal render setup task, for params unpacking.
103 HdxRenderSetupTaskSharedPtr _setupTask;
104
105 // XXX: Storm specific API
106 // Setup additional state that HdStRenderPassState requires.
107 void _SetHdStRenderPassState(HdTaskContext *ctx,
108 HdStRenderPassState *renderPassState);
109
110 // Inspect the AOV bindings to determine if any of them need to be cleared.
111 bool _NeedToClearAovs(HdRenderPassStateSharedPtr const &renderPassState)
112 const;
113
114 HdxRenderTask() = delete;
115 HdxRenderTask(const HdxRenderTask &) = delete;
116 HdxRenderTask &operator =(const HdxRenderTask &) = delete;
117};
118
119
120PXR_NAMESPACE_CLOSE_SCOPE
121
122#endif //PXR_IMAGING_HDX_RENDER_TASK_H
The Hydra render index is a flattened representation of the client scene graph, which may be composed...
Definition: renderIndex.h:105
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:49
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:274
RenderTask parameters (renderpass state).
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440