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 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: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:281
RenderTask parameters (renderpass state).
std::vector< TfToken > TfTokenVector
Convenience types.
Definition token.h:440