18#ifndef PXR_IMAGING_HD_CAMERA_SCHEMA_H
19#define PXR_IMAGING_HD_CAMERA_SCHEMA_H
23#include "pxr/imaging/hd/api.h"
24#include "pxr/imaging/hd/schemaTypeDefs.h"
28#include "pxr/imaging/hd/schema.h"
33PXR_NAMESPACE_OPEN_SCOPE
38#define HD_CAMERA_SCHEMA_TOKENS \
41 (horizontalAperture) \
43 (horizontalApertureOffset) \
44 (verticalApertureOffset) \
56 (exposureResponsivity) \
57 (linearExposureScale) \
62 (namespacedProperties) \
67 HD_CAMERA_SCHEMA_TOKENS);
74class HdCameraSchema :
public HdSchema
80 HdCameraSchema(HdContainerDataSourceHandle container)
89 static HdCameraSchema GetFromParent(
90 const HdContainerDataSourceHandle &fromParentContainer);
101 HdTokenDataSourceHandle GetProjection()
const;
104 HdFloatDataSourceHandle GetHorizontalAperture()
const;
107 HdFloatDataSourceHandle GetVerticalAperture()
const;
110 HdFloatDataSourceHandle GetHorizontalApertureOffset()
const;
113 HdFloatDataSourceHandle GetVerticalApertureOffset()
const;
116 HdFloatDataSourceHandle GetFocalLength()
const;
119 HdVec2fDataSourceHandle GetClippingRange()
const;
122 HdVec4dArrayDataSourceHandle GetClippingPlanes()
const;
125 HdFloatDataSourceHandle GetFStop()
const;
128 HdFloatDataSourceHandle GetFocusDistance()
const;
131 HdDoubleDataSourceHandle GetShutterOpen()
const;
134 HdDoubleDataSourceHandle GetShutterClose()
const;
137 HdFloatDataSourceHandle GetExposure()
const;
140 HdFloatDataSourceHandle GetExposureTime()
const;
143 HdFloatDataSourceHandle GetExposureIso()
const;
146 HdFloatDataSourceHandle GetExposureFStop()
const;
149 HdFloatDataSourceHandle GetExposureResponsivity()
const;
152 HdFloatDataSourceHandle GetLinearExposureScale()
const;
155 HdBoolDataSourceHandle GetFocusOn()
const;
158 HdFloatDataSourceHandle GetDofAspect()
const;
161 HdSplitDiopterSchema GetSplitDiopter()
const;
164 HdLensDistortionSchema GetLensDistortion()
const;
177 static const TfToken &GetSchemaToken();
243 static HdContainerDataSourceHandle
245 const HdTokenDataSourceHandle &projection,
246 const HdFloatDataSourceHandle &horizontalAperture,
247 const HdFloatDataSourceHandle &verticalAperture,
248 const HdFloatDataSourceHandle &horizontalApertureOffset,
249 const HdFloatDataSourceHandle &verticalApertureOffset,
250 const HdFloatDataSourceHandle &focalLength,
251 const HdVec2fDataSourceHandle &clippingRange,
252 const HdVec4dArrayDataSourceHandle &clippingPlanes,
253 const HdFloatDataSourceHandle &fStop,
254 const HdFloatDataSourceHandle &focusDistance,
255 const HdDoubleDataSourceHandle &shutterOpen,
256 const HdDoubleDataSourceHandle &shutterClose,
257 const HdFloatDataSourceHandle &exposure,
258 const HdFloatDataSourceHandle &exposureTime,
259 const HdFloatDataSourceHandle &exposureIso,
260 const HdFloatDataSourceHandle &exposureFStop,
261 const HdFloatDataSourceHandle &exposureResponsivity,
262 const HdFloatDataSourceHandle &linearExposureScale,
263 const HdBoolDataSourceHandle &focusOn,
264 const HdFloatDataSourceHandle &dofAspect,
265 const HdContainerDataSourceHandle &splitDiopter,
266 const HdContainerDataSourceHandle &lensDistortion,
267 const HdContainerDataSourceHandle &namespacedProperties
281 const HdTokenDataSourceHandle &projection);
283 Builder &SetHorizontalAperture(
284 const HdFloatDataSourceHandle &horizontalAperture);
287 const HdFloatDataSourceHandle &verticalAperture);
289 Builder &SetHorizontalApertureOffset(
290 const HdFloatDataSourceHandle &horizontalApertureOffset);
292 Builder &SetVerticalApertureOffset(
293 const HdFloatDataSourceHandle &verticalApertureOffset);
296 const HdFloatDataSourceHandle &focalLength);
299 const HdVec2fDataSourceHandle &clippingRange);
302 const HdVec4dArrayDataSourceHandle &clippingPlanes);
305 const HdFloatDataSourceHandle &fStop);
308 const HdFloatDataSourceHandle &focusDistance);
311 const HdDoubleDataSourceHandle &shutterOpen);
314 const HdDoubleDataSourceHandle &shutterClose);
317 const HdFloatDataSourceHandle &exposure);
320 const HdFloatDataSourceHandle &exposureTime);
323 const HdFloatDataSourceHandle &exposureIso);
326 const HdFloatDataSourceHandle &exposureFStop);
328 Builder &SetExposureResponsivity(
329 const HdFloatDataSourceHandle &exposureResponsivity);
331 Builder &SetLinearExposureScale(
332 const HdFloatDataSourceHandle &linearExposureScale);
335 const HdBoolDataSourceHandle &focusOn);
338 const HdFloatDataSourceHandle &dofAspect);
341 const HdContainerDataSourceHandle &splitDiopter);
344 const HdContainerDataSourceHandle &lensDistortion);
346 Builder &SetNamespacedProperties(
347 const HdContainerDataSourceHandle &namespacedProperties);
351 HdContainerDataSourceHandle
Build();
354 HdTokenDataSourceHandle _projection;
355 HdFloatDataSourceHandle _horizontalAperture;
356 HdFloatDataSourceHandle _verticalAperture;
357 HdFloatDataSourceHandle _horizontalApertureOffset;
358 HdFloatDataSourceHandle _verticalApertureOffset;
359 HdFloatDataSourceHandle _focalLength;
360 HdVec2fDataSourceHandle _clippingRange;
361 HdVec4dArrayDataSourceHandle _clippingPlanes;
362 HdFloatDataSourceHandle _fStop;
363 HdFloatDataSourceHandle _focusDistance;
364 HdDoubleDataSourceHandle _shutterOpen;
365 HdDoubleDataSourceHandle _shutterClose;
366 HdFloatDataSourceHandle _exposure;
367 HdFloatDataSourceHandle _exposureTime;
368 HdFloatDataSourceHandle _exposureIso;
369 HdFloatDataSourceHandle _exposureFStop;
370 HdFloatDataSourceHandle _exposureResponsivity;
371 HdFloatDataSourceHandle _linearExposureScale;
372 HdBoolDataSourceHandle _focusOn;
373 HdFloatDataSourceHandle _dofAspect;
374 HdContainerDataSourceHandle _splitDiopter;
375 HdContainerDataSourceHandle _lensDistortion;
376 HdContainerDataSourceHandle _namespacedProperties;
387 static HdTokenDataSourceHandle BuildProjectionDataSource(
393PXR_NAMESPACE_CLOSE_SCOPE
Utility class for setting sparse sets of child data source fields to be filled as arguments into Buil...
HD_API HdContainerDataSourceHandle Build()
Returns a container data source containing the members set thus far.
Template class for a schema backed by a container whose children have arbitrary names but an expected...
Represents an object that can identify the location of a data source.
Schema classes represent a structured view of the inherently unstructured container data source passe...
Token for efficient comparison, assignment, and hashing of known strings.
#define TF_DECLARE_PUBLIC_TOKENS(...)
Macro to define public tokens.