Loading...
Searching...
No Matches
types.h
1//
2// Copyright 2020 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_HIO_TYPES_H
8#define PXR_IMAGING_HIO_TYPES_H
9
10#include "pxr/pxr.h"
11#include "pxr/imaging/hio/api.h"
12#include <stdlib.h>
13#include <cinttypes>
14
15PXR_NAMESPACE_OPEN_SCOPE
16
17class GfVec3i;
18
25enum HioFormat
26{
27 HioFormatInvalid=-1,
28
29 // UNorm8 - a 1-byte value representing a float between 0 and 1.
30 // float value = (unorm / 255.0f);
31 HioFormatUNorm8=0,
32 HioFormatUNorm8Vec2,
33 HioFormatUNorm8Vec3,
34 HioFormatUNorm8Vec4,
35
36 // SNorm8 - a 1-byte value representing a float between -1 and 1.
37 // float value = max(snorm / 127.0f, -1.0f);
38 HioFormatSNorm8,
39 HioFormatSNorm8Vec2,
40 HioFormatSNorm8Vec3,
41 HioFormatSNorm8Vec4,
42
43 // Float16 - a 2-byte IEEE half-precision float.
44 HioFormatFloat16,
45 HioFormatFloat16Vec2,
46 HioFormatFloat16Vec3,
47 HioFormatFloat16Vec4,
48
49 // Float32 - a 4-byte IEEE float.
50 HioFormatFloat32,
51 HioFormatFloat32Vec2,
52 HioFormatFloat32Vec3,
53 HioFormatFloat32Vec4,
54
55 // Double64 - a 8-byte IEEE double.
56 HioFormatDouble64,
57 HioFormatDouble64Vec2,
58 HioFormatDouble64Vec3,
59 HioFormatDouble64Vec4,
60
61 // UInt16 - a 2-byte unsigned short integer.
62 HioFormatUInt16,
63 HioFormatUInt16Vec2,
64 HioFormatUInt16Vec3,
65 HioFormatUInt16Vec4,
66
67 // Int16 - a 2-byte signed short integer.
68 HioFormatInt16,
69 HioFormatInt16Vec2,
70 HioFormatInt16Vec3,
71 HioFormatInt16Vec4,
72
73 // UInt32 - a 4-byte unsigned integer.
74 HioFormatUInt32,
75 HioFormatUInt32Vec2,
76 HioFormatUInt32Vec3,
77 HioFormatUInt32Vec4,
78
79 // Int32 - a 4-byte signed integer.
80 HioFormatInt32,
81 HioFormatInt32Vec2,
82 HioFormatInt32Vec3,
83 HioFormatInt32Vec4,
84
85 // UNorm8 SRGB - a 1-byte value representing a float between 0 and 1.
86 HioFormatUNorm8srgb,
87 HioFormatUNorm8Vec2srgb,
88 HioFormatUNorm8Vec3srgb,
89 HioFormatUNorm8Vec4srgb,
90
91 // BPTC compressed. 3-component, 4x4 blocks, signed floating-point
92 HioFormatBC6FloatVec3,
93
94 // BPTC compressed. 3-component, 4x4 blocks, unsigned floating-point
95 HioFormatBC6UFloatVec3,
96
97 // BPTC compressed. 4-component, 4x4 blocks, unsigned byte.
98 // Representing a float between 0 and 1.
99 HioFormatBC7UNorm8Vec4,
100
101 // BPTC compressed. 4-component, 4x4 blocks, unsigned byte, sRGB.
102 // Representing a float between 0 and 1.
103 HioFormatBC7UNorm8Vec4srgb,
104
105 // S3TC/DXT compressed. 4-component, 4x4 blocks, unsigned byte
106 // Representing a float between 0 and 1.
107 HioFormatBC1UNorm8Vec4,
108
109 // S3TC/DXT compressed. 4-component, 4x4 blocks, unsigned byte
110 // Representing a float between 0 and 1.
111 HioFormatBC3UNorm8Vec4,
112
113 HioFormatCount
114};
115
120enum HioAddressDimension
121{
122 HioAddressDimensionU,
123 HioAddressDimensionV,
124 HioAddressDimensionW
125};
126
131enum HioAddressMode
132{
133 HioAddressModeClampToEdge = 0,
134 HioAddressModeMirrorClampToEdge,
135 HioAddressModeRepeat,
136 HioAddressModeMirrorRepeat,
137 HioAddressModeClampToBorderColor
138};
139
144enum HioType
145{
146 HioTypeUnsignedByte,
147 HioTypeUnsignedByteSRGB,
148 HioTypeSignedByte,
149 HioTypeUnsignedShort,
150 HioTypeSignedShort,
151 HioTypeUnsignedInt,
152 HioTypeInt,
153 HioTypeHalfFloat,
154 HioTypeFloat,
155 HioTypeDouble,
156
157 HioTypeCount
158};
159
161HIO_API
162HioFormat HioGetFormat(uint32_t nchannels,
163 HioType type,
164 bool isSRGB);
165
167HIO_API
168HioType HioGetHioType(HioFormat);
169
171HIO_API
172int HioGetComponentCount(HioFormat format);
173
175HIO_API
176size_t HioGetDataSizeOfType(HioFormat hioFormat);
177
179HIO_API
180size_t HioGetDataSizeOfType(HioType type);
181
183HIO_API
184size_t HioGetDataSizeOfFormat(HioFormat format,
185 size_t *blockWidth = nullptr,
186 size_t *blockHeight = nullptr);
187
189HIO_API
190bool HioIsCompressed(HioFormat format);
191
194HIO_API
195size_t HioGetDataSize(const HioFormat hioFormat, const GfVec3i &dimensions);
196
197PXR_NAMESPACE_CLOSE_SCOPE
198
199#endif
Basic type for a vector of 3 int components.
Definition: vec3i.h:44