Loading...
Searching...
No Matches
renderPass.h
1//
2// Copyright 2016 Pixar
3//
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
5// with the following modification; you may not use this file except in
6// compliance with the Apache License and the following modification to it:
7// Section 6. Trademarks. is deleted and replaced with:
8//
9// 6. Trademarks. This License does not grant permission to use the trade
10// names, trademarks, service marks, or product names of the Licensor
11// and its affiliates, except as required to comply with Section 4(c) of
12// the License and to reproduce the content of the NOTICE file.
13//
14// You may obtain a copy of the Apache License at
15//
16// http://www.apache.org/licenses/LICENSE-2.0
17//
18// Unless required by applicable law or agreed to in writing, software
19// distributed under the Apache License with the above modification is
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21// KIND, either express or implied. See the Apache License for the specific
22// language governing permissions and limitations under the Apache License.
23//
24#ifndef PXR_IMAGING_HD_RENDER_PASS_H
25#define PXR_IMAGING_HD_RENDER_PASS_H
26
27#include "pxr/pxr.h"
28#include "pxr/imaging/hd/api.h"
29#include "pxr/imaging/hd/version.h"
30#include "pxr/imaging/hd/rprimCollection.h"
31#include "pxr/imaging/hd/task.h"
32
33#include <memory>
34
35PXR_NAMESPACE_OPEN_SCOPE
36
37class HdRenderIndex;
38class HdSceneDelegate;
39
40using HdRenderPassSharedPtr = std::shared_ptr<class HdRenderPass>;
41using HdRenderPassStateSharedPtr = std::shared_ptr<class HdRenderPassState>;
42
70{
71public:
72 HD_API
73 HdRenderPass(HdRenderIndex *index, HdRprimCollection const& collection);
74 HD_API
75 virtual ~HdRenderPass();
76
78 HdRprimCollection const& GetRprimCollection() const { return _collection; }
79
82 HD_API
84
86 HdRenderIndex* GetRenderIndex() const { return _renderIndex; }
87
88 // ---------------------------------------------------------------------- //
90 // ---------------------------------------------------------------------- //
91
93 HD_API
94 void Sync();
95
96 // ---------------------------------------------------------------------- //
98 // ---------------------------------------------------------------------- //
99
101 HD_API
102 void Execute(HdRenderPassStateSharedPtr const &renderPassState,
103 TfTokenVector const &renderTags);
104
105 // ---------------------------------------------------------------------- //
107 // ---------------------------------------------------------------------- //
108
109 virtual bool IsConverged() const { return true; }
110
111protected:
114 virtual void _Execute(HdRenderPassStateSharedPtr const &renderPassState,
115 TfTokenVector const &renderTags) = 0;
116
118 virtual void _MarkCollectionDirty() {}
119
121 virtual void _Sync() {}
122
123private:
124
125 // Don't allow copies
126 HdRenderPass(const HdRenderPass &) = delete;
127 HdRenderPass &operator=(const HdRenderPass &) = delete;
128
129 // ---------------------------------------------------------------------- //
130 // \name Change Tracking State
131 // ---------------------------------------------------------------------- //
132 // The renderIndex to which this renderPass belongs
133 // (can't change after construction)
134 HdRenderIndex * const _renderIndex;
135
136 // ---------------------------------------------------------------------- //
137 // \name Core RenderPass State
138 // ---------------------------------------------------------------------- //
139 HdRprimCollection _collection;
140};
141
142PXR_NAMESPACE_CLOSE_SCOPE
143
144#endif //PXR_IMAGING_HD_RENDER_PASS_H
The Hydra render index is a flattened representation of the client scene graph, which may be composed...
Definition: renderIndex.h:121
An abstract class representing a single render iteration over a set of prims (the HdRprimCollection),...
Definition: renderPass.h:70
virtual void _Execute(HdRenderPassStateSharedPtr const &renderPassState, TfTokenVector const &renderTags)=0
Virtual API: Execute the buckets corresponding to renderTags; renderTags.empty() implies execute ever...
virtual void _Sync()
Optional API: let derived classes sync data.
Definition: renderPass.h:121
HdRprimCollection const & GetRprimCollection() const
Returns the HdRprimCollection to be drawn by this RenderPass.
Definition: renderPass.h:78
HD_API void Execute(HdRenderPassStateSharedPtr const &renderPassState, TfTokenVector const &renderTags)
Execute a subset of buckets of this renderpass.
HdRenderIndex * GetRenderIndex() const
Return the render index.
Definition: renderPass.h:86
HD_API void SetRprimCollection(HdRprimCollection const &col)
Sets the HdRprimCollection, note that this may invalidate internal caches used to accelerate drawing.
virtual void _MarkCollectionDirty()
Optional API: let derived classes mark their collection tracking as dirty.
Definition: renderPass.h:118
HD_API void Sync()
Sync the render pass resources.
A named, semantic collection of objects.
Adapter class providing data exchange with the client scene graph.
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:457