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_ST_RENDER_PASS_H
25#define PXR_IMAGING_HD_ST_RENDER_PASS_H
26
27#include "pxr/pxr.h"
28#include "pxr/imaging/hdSt/api.h"
29#include "pxr/imaging/hdSt/commandBuffer.h"
30#include "pxr/imaging/hd/renderPass.h"
31
32PXR_NAMESPACE_OPEN_SCOPE
33
34class Hgi;
35
40class HdSt_RenderPass : public HdRenderPass {
41public:
42 HDST_API
43 HdSt_RenderPass(HdRenderIndex *index, HdRprimCollection const &collection);
44 HDST_API
45 virtual ~HdSt_RenderPass();
46
52 HDST_API
53 bool HasDrawItems(TfTokenVector const &renderTags) const;
54
55protected:
56 virtual void _Execute(HdRenderPassStateSharedPtr const &renderPassState,
57 TfTokenVector const &renderTags) override;
58
59 virtual void _MarkCollectionDirty() override;
60
61private:
62 void _UpdateDrawItems(TfTokenVector const& renderTags);
63 void _UpdateCommandBuffer(TfTokenVector const& renderTags);
64
65 // -----------------------------------------------------------------------
66 // Drawing state
67 HdStCommandBuffer _cmdBuffer;
68
69 int _lastSettingsVersion;
70 bool _useTinyPrimCulling;
71
72 // -----------------------------------------------------------------------
73 // Change tracking state.
74 // XXX: This is necessary only when not using the draw items cache.
75
76 // The version number of the currently held collection.
77 int _collectionVersion;
78
79 // The version number of the render tag opinion of rprims
80 int _rprimRenderTagVersion;
81
82 // The version number of the render tags opinion of tasks.
83 int _taskRenderTagsVersion;
84
85 // The renderTags passed to _Execute(), for comparison next _Execute().
86 TfTokenVector _prevRenderTags;
87
88 // The version number of the material tags (of the rprims).
89 unsigned int _materialTagsVersion;
90
91 // The version number of the geom subset draw items.
92 unsigned int _geomSubsetDrawItemsVersion;
93
94 // A flag indicating that the held collection changed since this renderPass
95 // was last drawn.
96 //
97 // When _collectionChanged is true, it indicates that _collectionVersion is
98 // no longer accurate, because _collectionVersion was stored for the
99 // previously held collection.
100 bool _collectionChanged;
101
102 // -----------------------------------------------------------------------
103 // DrawItems that are used to build the draw batches.
104 HdDrawItemConstPtrVectorSharedPtr _drawItems;
105 size_t _drawItemCount;
106 bool _drawItemsChanged;
107
108 Hgi* _hgi;
109};
110
111PXR_NAMESPACE_CLOSE_SCOPE
112
113#endif // PXR_IMAGING_HD_ST_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 _MarkCollectionDirty()
Optional API: let derived classes mark their collection tracking as dirty.
Definition: renderPass.h:118
A named, semantic collection of objects.
A buffer of commands (HdStDrawItem or HdComputeItem objects) to be executed.
Definition: commandBuffer.h:64
Hydra Graphics Interface.
Definition: hgi.h:111
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:457