Loading...
Searching...
No Matches
rprimSharedData.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_RPRIM_SHARED_DATA_H
25#define PXR_IMAGING_HD_RPRIM_SHARED_DATA_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/bufferArrayRange.h"
31#include "pxr/imaging/hd/tokens.h"
32
33#include "pxr/usd/sdf/path.h"
34
35#include "pxr/base/gf/bbox3d.h"
36#include "pxr/base/vt/array.h"
37#include "pxr/base/vt/types.h"
38
39PXR_NAMESPACE_OPEN_SCOPE
40
41using TopologyToPrimvarVector =
42 std::vector<std::pair<VtIntArray, std::vector<TfToken>>>;
43
44// HdRprimSharedData is an assortment of data being shared across HdReprs,
45// owned by HdRprim. HdDrawItem holds a const pointer to HdRprimSharedData.
46//
47// HdRprim
48// |
49// +--HdRepr(s)
50// | |
51// | +--HdDrawItem(s)-----.
52// | |
53// +--HdRprimSharedData <---'
54//
55
56struct HdRprimSharedData {
57 HdRprimSharedData(int barContainerSize)
58 : barContainer(barContainerSize)
59 , bounds()
60 , instancerLevels(0)
61 , visible(true)
62 , rprimID()
63 { }
64
65 HdRprimSharedData(int barContainerSize,
66 bool visible)
67 : barContainer(barContainerSize)
68 , bounds()
69 , instancerLevels(0)
70 , visible(visible)
71 , rprimID()
72 { }
73
74 // BufferArrayRange array
75 HdBufferArrayRangeContainer barContainer;
76
77 // Used for CPU frustum culling.
78 GfBBox3d bounds;
79
80 // The number of levels of instancing applied to this rprim.
81 int instancerLevels;
82
83 // Used for authored/delegate visibility.
84 bool visible;
85
86 // The owning Rprim's identifier.
87 SdfPath rprimID;
88
89 // Data structure containing the face-varying topologies of an rprim (mesh
90 // only) and each of the topology's associated face-varying primvar names.
91 // Used in drawing to determine which primvar uses which face-varying
92 // channel.
93 TopologyToPrimvarVector fvarTopologyToPrimvarVector;
94};
95
96
97PXR_NAMESPACE_CLOSE_SCOPE
98
99#endif // PXR_IMAGING_HD_RPRIM_SHARED_DATA_H
Defines all the types "TYPED" for which Vt creates a VtTYPEDArray typedef.
Basic type: arbitrarily oriented 3D bounding box.
Definition: bbox3d.h:84
A resizable container of HdBufferArrayRanges.
A path value used to locate objects in layers or scenegraphs.
Definition: path.h:290