tokens.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_TOKENS_H
25 #define PXR_IMAGING_HD_TOKENS_H
26 
27 #include "pxr/pxr.h"
28 #include "pxr/imaging/hd/api.h"
29 #include "pxr/imaging/hd/version.h"
31 
32 PXR_NAMESPACE_OPEN_SCOPE
33 
34 #define HD_TOKENS \
35  (accelerations) \
36  (adjacency) \
37  (bboxLocalMin) \
38  (bboxLocalMax) \
39  (bbox) \
40  (bezier) \
41  (bSpline) \
42  (camera) \
43  (catmullRom) \
44  (collection) \
45  (computeShader) \
46  (coordSysBindings) \
47  (cubic) \
48  (cullStyle) \
49  (doubleSided) \
50  (dispatchCount) \
51  (displayColor) \
52  (displayOpacity) \
53  (displayStyle) \
54  (drawDispatch) \
55  (drawingShader) \
56  (drawingCoord0) \
57  (drawingCoord1) \
58  (drawingCoord2) \
59  (drawingCoordI) \
60  (drivers) \
61  (edgeIndices) \
62  (elementCount) \
63  (elementsVisibility) \
64  (extent) \
65  (faceColors) \
66  (filters) \
67  (full) \
68  (geometry) \
69  (hermite) \
70  (hullIndices) \
71  (indices) \
72  (isFlipped) \
73  (itemsDrawn) \
74  (layout) \
75  (leftHanded) \
76  (linear) \
77  (lightLink) \
78  (lightFilterLink) \
79  (materialParams) \
80  (nonperiodic) \
81  (normals) \
82  (params) \
83  (patchParam) \
84  (periodic) \
85  (pinned) \
86  (points) \
87  (pointsIndices) \
88  (power) \
89  (preview) \
90  (pointsVisibility) \
91  (primvar) \
92  (primID) \
93  (primitiveParam) \
94  (quadInfo) \
95  (renderTags) \
96  (rightHanded) \
97  (segmented) \
98  (shadowLink) \
99  (subdivTags) \
100  (taskState) \
101  (taskParams) \
102  (topology) \
103  (topologyVisibility) \
104  (totalItemCount) \
105  (transform) \
106  (transformInverse) \
107  (velocities) \
108  (visibility) \
109  (widths)
110 
111 #define HD_INSTANCER_TOKENS \
112  (culledInstanceIndices) \
113  (instancer) \
114  (instancerTransform) \
115  (instancerTransformInverse) \
116  (instanceIndices) \
117  (instanceIndexBase) \
118  (instanceTransform) \
119  (rotate) \
120  (scale) \
121  (translate)
122 
123 #define HD_REPR_TOKENS \
124  (disabled) \
125  (hull) \
126  (points) \
127  (smoothHull) \
128  (refined) \
129  (refinedWire) \
130  (refinedWireOnSurf) \
131  (wire) \
132  (wireOnSurf)
133 
134 #define HD_CULLSTYLE_TOKENS \
135  (dontCare) \
136  (nothing) \
137  (back) \
138  (front) \
139  (backUnlessDoubleSided) \
140  (frontUnlessDoubleSided)
141 
142 #define HD_PERF_TOKENS \
143  (adjacencyBufSize) \
144  (basisCurvesTopology) \
145  (bufferSourcesResolved) \
146  (bufferArrayRangeMigrated) \
147  (bufferArrayRangeContainerResized) \
148  (computationsCommited) \
149  (drawBatches) \
150  (drawCalls) \
151  (dirtyLists) \
152  (dirtyListsRebuilt) \
153  (garbageCollected) \
154  (garbageCollectedSsbo) \
155  (garbageCollectedUbo) \
156  (garbageCollectedVbo) \
157  (gpuMemoryUsed) \
158  (instBasisCurvesTopology) \
159  (instBasisCurvesTopologyRange) \
160  (instExtComputationDataRange) \
161  (instMeshTopology) \
162  (instMeshTopologyRange) \
163  (instPrimvarRange) \
164  (instVertexAdjacency) \
165  (meshTopology) \
166  (nonUniformSize) \
167  (numCompletedSamples) \
168  (quadrangulateCPU) \
169  (quadrangulateGPU) \
170  (quadrangulateFaceVarying) \
171  (quadrangulatedVerts) \
172  (rebuildBatches) \
173  (singleBufferSize) \
174  (ssboSize) \
175  (skipInvisibleRprimSync) \
176  (subdivisionRefineCPU) \
177  (subdivisionRefineGPU) \
178  (textureMemory) \
179  (triangulateFaceVarying) \
180  (uboSize) \
181  (vboRelocated)
182 
183 #define HD_SHADER_TOKENS \
184  (alphaThreshold) \
185  (clipPlanes) \
186  (commonShaderSource) \
187  (computeShader) \
188  (cullStyle) \
189  (drawRange) \
190  (environmentMap) \
191  (fragmentShader) \
192  (geometryShader) \
193  (indicatorColor) \
194  (lightingBlendAmount) \
195  (overrideColor) \
196  (maskColor) \
197  (projectionMatrix) \
198  (pointColor) \
199  (pointSize) \
200  (pointSelectedSize) \
201  (materialTag) \
202  (tessControlShader) \
203  (tessEvalShader) \
204  (tessLevel) \
205  (viewport) \
206  (vertexShader) \
207  (wireframeColor) \
208  (worldToViewMatrix) \
209  (worldToViewInverseMatrix)
210 
211 // Deprecated. Use: HdStMaterialTagTokens
212 #define HD_MATERIALTAG_TOKENS \
213  (defaultMaterialTag)
214 
215 /* Terminal keys used in material networks.
216  */
217 #define HD_MATERIAL_TERMINAL_TOKENS \
218  (surface) \
219  (displacement) \
220  (volume) \
221  (light) \
222  (lightFilter)
223 
224 #define HD_RENDERTAG_TOKENS \
225  (geometry) \
226  (guide) \
227  (hidden) \
228  (proxy) \
229  (render)
230 
231 #define HD_RENDER_CONTEXT_TOKENS \
232  ((universal, ""))
233 
234 #define HD_OPTION_TOKENS \
235  (parallelRprimSync)
236 
237 #define HD_PRIMTYPE_TOKENS \
238  /* Rprims */ \
239  (mesh) \
240  (basisCurves) \
241  (points) \
242  (volume) \
243  \
244  /* Sprims */ \
245  (camera) \
246  (drawTarget) \
247  (material) \
248  (coordSys) \
249  (instancer) \
250  (instance) \
251  /* Sprims Lights */ \
252  (simpleLight) \
253  (cylinderLight) \
254  (diskLight) \
255  (distantLight) \
256  (domeLight) \
257  (light) \
258  (lightFilter) \
259  (pluginLight) \
260  (rectLight) \
261  (sphereLight) \
262  /* Sprims ExtComputations */ \
263  (extComputation) \
264  \
265  /* Bprims */ \
266  (renderBuffer)
267 
268 HD_API
269 bool HdPrimTypeIsGprim(TfToken const& primType);
270 
271 HD_API
272 bool HdPrimTypeIsLight(TfToken const& primType);
273 
274 #define HD_PRIMVAR_ROLE_TOKENS \
275  ((none, "")) \
276  (color) \
277  (vector) \
278  (normal) \
279  (point) \
280  (textureCoordinate)
281 
282 /* Schema for "Alternate Output Values" rendering,
283  * describing which values a renderpass should
284  * compute and write at render time.
285  */
286 #define HD_AOV_TOKENS \
287  /* Standard rendering outputs */ \
288  \
289  /* HdAovTokens->color represents the final
290  * fragment RGBA color. For correct compositing
291  * using Hydra, it should have pre-multiplied alpha.
292  */ \
293  (color) \
294  /* HdAovTokens->depth represents the clip-space
295  * depth of the final fragment.
296  */ \
297  (depth) \
298  /* HdAovTokens->cameraDepth represents the camera-space
299  * depth of the final fragment.
300  */ \
301  (cameraDepth) \
302  /* ID rendering - these tokens represent the
303  * prim, instance, and subprim ids of the final
304  * fragment.
305  */ \
306  (primId) \
307  (instanceId) \
308  (elementId) \
309  (edgeId) \
310  (pointId) \
311  /* Geometric data */ \
312  (Peye) \
313  (Neye) \
314  (patchCoord) \
315  (primitiveParam) \
316  (normal) \
317  /* Others we might want to add:
318  * https://rmanwiki.pixar.com/display/REN/Arbitrary+Output+Variables
319  * - curvature
320  * - tangent
321  * - velocity
322  */ \
323  /* Primvars:
324  * The tokens don't try to enumerate primvars,
325  * but instead provide an identifying namespace.
326  * The "color" primvar is addressable as "primvars:color".
327  */ \
328  ((primvars, "primvars:")) \
329  /* Light path expressions:
330  * Applicable only to raytracers, these tell
331  * the renderer to output specific shading
332  * components for specific classes of lightpath.
333  *
334  * Lightpath syntax is defined here:
335  * https://rmanwiki.pixar.com/display/REN/Light+Path+Expressions
336  * ... so for example, you could specify
337  * "lpe:CD[<L.>O]"
338  */ \
339  ((lpe, "lpe:")) \
340  /* Shader signals:
341  * This tells the renderer to output a partial shading signal,
342  * whether from the BXDF (e.g. bxdf.diffuse) or from an intermediate
343  * shading node (e.g. fractal.rgb).
344  * XXX: The exact format is TBD.
345  */ \
346  ((shader, "shader:"))
347 
348 HD_API
349 TfToken HdAovTokensMakePrimvar(TfToken const& primvar);
350 
351 HD_API
352 TfToken HdAovTokensMakeLpe(TfToken const& lpe);
353 
354 HD_API
355 TfToken HdAovTokensMakeShader(TfToken const& shader);
356 
357 /* Schema for application-configurable render settings. */
358 #define HD_RENDER_SETTINGS_TOKENS \
359  /* General graphical options */ \
360  (enableShadows) \
361  (enableSceneMaterials) \
362  (enableSceneLights) \
363  /* Raytracer sampling settings */ \
364  (convergedVariance) \
365  (convergedSamplesPerPixel) \
366  /* thread limit settings */ \
367  (threadLimit) \
368  /* interactive vs offline */ \
369  (enableInteractive)
370 
371 #define HD_RESOURCE_TYPE_TOKENS \
372  (texture) \
373  (shaderFile)
374 
375 #define HD_SCENE_INDEX_EMULATION_TOKENS \
376  (sceneDelegate) \
377 
378 TF_DECLARE_PUBLIC_TOKENS(HdTokens, HD_API, HD_TOKENS);
379 TF_DECLARE_PUBLIC_TOKENS(HdInstancerTokens, HD_API, HD_INSTANCER_TOKENS);
380 TF_DECLARE_PUBLIC_TOKENS(HdReprTokens, HD_API, HD_REPR_TOKENS);
381 TF_DECLARE_PUBLIC_TOKENS(HdCullStyleTokens, HD_API, HD_CULLSTYLE_TOKENS);
382 TF_DECLARE_PUBLIC_TOKENS(HdPerfTokens, HD_API, HD_PERF_TOKENS);
383 TF_DECLARE_PUBLIC_TOKENS(HdShaderTokens, HD_API, HD_SHADER_TOKENS);
384 TF_DECLARE_PUBLIC_TOKENS(HdMaterialTagTokens, HD_API, HD_MATERIALTAG_TOKENS);
385 TF_DECLARE_PUBLIC_TOKENS(HdMaterialTerminalTokens, HD_API,
386  HD_MATERIAL_TERMINAL_TOKENS);
387 TF_DECLARE_PUBLIC_TOKENS(HdRenderTagTokens, HD_API, HD_RENDERTAG_TOKENS);
388 TF_DECLARE_PUBLIC_TOKENS(HdRenderContextTokens, HD_API, HD_RENDER_CONTEXT_TOKENS);
389 TF_DECLARE_PUBLIC_TOKENS(HdOptionTokens, HD_API, HD_OPTION_TOKENS);
390 TF_DECLARE_PUBLIC_TOKENS(HdPrimTypeTokens, HD_API, HD_PRIMTYPE_TOKENS);
391 TF_DECLARE_PUBLIC_TOKENS(HdPrimvarRoleTokens, HD_API, HD_PRIMVAR_ROLE_TOKENS);
392 TF_DECLARE_PUBLIC_TOKENS(HdAovTokens, HD_API, HD_AOV_TOKENS);
393 TF_DECLARE_PUBLIC_TOKENS(HdRenderSettingsTokens, HD_API, HD_RENDER_SETTINGS_TOKENS);
394 TF_DECLARE_PUBLIC_TOKENS(HdResourceTypeTokens, HD_API, HD_RESOURCE_TYPE_TOKENS);
395 TF_DECLARE_PUBLIC_TOKENS(HdSceneIndexEmulationTokens, HD_API,
396  HD_SCENE_INDEX_EMULATION_TOKENS);
397 
398 PXR_NAMESPACE_CLOSE_SCOPE
399 
400 #endif //PXR_IMAGING_HD_TOKENS_H
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:87
#define TF_DECLARE_PUBLIC_TOKENS(...)
Macro to define public tokens.
Definition: staticTokens.h:118
This file defines some macros that are useful for declaring and using static TfTokens.