HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
dirtyBitsTranslator.h
Go to the documentation of this file.
1 //
2 // Copyright 2021 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_HD_DIRTY_BITS_TRANSLATOR_H
8 #define PXR_IMAGING_HD_DIRTY_BITS_TRANSLATOR_H
9 
10 #include "pxr/pxr.h"
11 #include "pxr/base/tf/token.h"
13 #include "pxr/imaging/hd/types.h"
14 
16 
17 /// \class HdDirtyBitsTranslator
18 ///
19 /// A set of optimized functions for translating between dirty bits and
20 /// datasource locators for different prim types.
22 {
23 public:
24  // Dirty bits to locators.
25  HD_API
26  static void RprimDirtyBitsToLocatorSet(TfToken const& primType,
28  HD_API
29  static void SprimDirtyBitsToLocatorSet(TfToken const& primType,
30  const HdDirtyBits bits, HdDataSourceLocatorSet *set);
31  HD_API
32  static void BprimDirtyBitsToLocatorSet(TfToken const& primType,
33  const HdDirtyBits bits, HdDataSourceLocatorSet *set);
34  HD_API
35  static void InstancerDirtyBitsToLocatorSet(TfToken const& primType,
36  const HdDirtyBits bits, HdDataSourceLocatorSet *set);
37  HD_API
38  static void TaskDirtyBitsToLocatorSet(
39  const HdDirtyBits bits, HdDataSourceLocatorSet *set);
40 
41  // Locators to dirty bits.
42  HD_API
43  static HdDirtyBits RprimLocatorSetToDirtyBits(TfToken const& primType,
44  HdDataSourceLocatorSet const& set);
45  HD_API
46  static HdDirtyBits SprimLocatorSetToDirtyBits(TfToken const& primType,
47  HdDataSourceLocatorSet const& set,
48  const TfTokenVector& renderContexts = {});
49  HD_API
50  static HdDirtyBits BprimLocatorSetToDirtyBits(TfToken const& primType,
51  HdDataSourceLocatorSet const& set);
52  HD_API
53  static HdDirtyBits InstancerLocatorSetToDirtyBits(TfToken const& primType,
54  HdDataSourceLocatorSet const& set);
55  HD_API
57  HdDataSourceLocatorSet const& set);
58 
60  std::function<void(HdDataSourceLocatorSet const&, HdDirtyBits *)>;
61 
63  std::function<void(const HdDirtyBits, HdDataSourceLocatorSet *)>;
64 
65  /// Allows for customization of translation for unknown (to the system)
66  /// sprim types. Absence of registered functions for an unknown type falls
67  /// back to DirtyAll equivalents in both directions.
68  HD_API
69  static void RegisterTranslatorsForCustomSprimType(TfToken const& primType,
71 
72 };
73 
75 
76 #endif // PXR_IMAGING_HD_DIRTY_BITS_TRANSLATOR_H
static HD_API void TaskDirtyBitsToLocatorSet(const HdDirtyBits bits, HdDataSourceLocatorSet *set)
std::function< void(HdDataSourceLocatorSet const &, HdDirtyBits *)> LocatorSetToDirtyBitsFnc
static HD_API HdDirtyBits RprimLocatorSetToDirtyBits(TfToken const &primType, HdDataSourceLocatorSet const &set)
std::function< void(const HdDirtyBits, HdDataSourceLocatorSet *)> DirtyBitsToLocatorSetFnc
uint32_t HdDirtyBits
Definition: types.h:143
static HD_API HdDirtyBits InstancerLocatorSetToDirtyBits(TfToken const &primType, HdDataSourceLocatorSet const &set)
#define HD_API
Definition: api.h:23
static HD_API void SprimDirtyBitsToLocatorSet(TfToken const &primType, const HdDirtyBits bits, HdDataSourceLocatorSet *set)
static HD_API HdDirtyBits SprimLocatorSetToDirtyBits(TfToken const &primType, HdDataSourceLocatorSet const &set, const TfTokenVector &renderContexts={})
static HD_API void InstancerDirtyBitsToLocatorSet(TfToken const &primType, const HdDirtyBits bits, HdDataSourceLocatorSet *set)
Definition: token.h:70
constexpr auto set(type rhs) -> int
Definition: core.h:610
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440
static HD_API void BprimDirtyBitsToLocatorSet(TfToken const &primType, const HdDirtyBits bits, HdDataSourceLocatorSet *set)
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1425
static HD_API HdDirtyBits BprimLocatorSetToDirtyBits(TfToken const &primType, HdDataSourceLocatorSet const &set)
static HD_API HdDirtyBits TaskLocatorSetToDirtyBits(HdDataSourceLocatorSet const &set)
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
static HD_API void RegisterTranslatorsForCustomSprimType(TfToken const &primType, LocatorSetToDirtyBitsFnc sToBFnc, DirtyBitsToLocatorSetFnc bToSFnc)
static HD_API void RprimDirtyBitsToLocatorSet(TfToken const &primType, const HdDirtyBits bits, HdDataSourceLocatorSet *set)