Loading...
Searching...
No Matches
dirtyBitsTranslator.h
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"
12#include "pxr/imaging/hd/dataSourceLocator.h"
13#include "pxr/imaging/hd/types.h"
14
15PXR_NAMESPACE_OPEN_SCOPE
16
22{
23public:
24 // Dirty bits to locators.
25 HD_API
26 static void RprimDirtyBitsToLocatorSet(TfToken const& primType,
27 const HdDirtyBits bits, HdDataSourceLocatorSet *set);
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
56 static HdDirtyBits TaskLocatorSetToDirtyBits(
57 HdDataSourceLocatorSet const& set);
58
59 using LocatorSetToDirtyBitsFnc =
60 std::function<void(HdDataSourceLocatorSet const&, HdDirtyBits *)>;
61
62 using DirtyBitsToLocatorSetFnc =
63 std::function<void(const HdDirtyBits, HdDataSourceLocatorSet *)>;
64
68 HD_API
70 LocatorSetToDirtyBitsFnc sToBFnc, DirtyBitsToLocatorSetFnc bToSFnc);
71
73 HD_API
75 LocatorSetToDirtyBitsFnc sToBFnc, DirtyBitsToLocatorSetFnc bToSFnc);
76};
77
78PXR_NAMESPACE_CLOSE_SCOPE
79
80#endif // PXR_IMAGING_HD_DIRTY_BITS_TRANSLATOR_H
Represents a set of data source locators closed under descendancy.
A set of optimized functions for translating between dirty bits and datasource locators for different...
static HD_API void RegisterTranslatorsForCustomSprimType(TfToken const &primType, LocatorSetToDirtyBitsFnc sToBFnc, DirtyBitsToLocatorSetFnc bToSFnc)
Allows for customization of translation for unknown (to the system) sprim types.
static HD_API void RegisterTranslatorsForCustomRprimType(TfToken const &primType, LocatorSetToDirtyBitsFnc sToBFnc, DirtyBitsToLocatorSetFnc bToSFnc)
Allows for customization of translation for rprim types.
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:71
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440