7#ifndef PXR_IMAGING_HD_CAMERA_H
8#define PXR_IMAGING_HD_CAMERA_H
11#include "pxr/imaging/hd/api.h"
12#include "pxr/imaging/hd/version.h"
13#include "pxr/imaging/hd/sprim.h"
15#include "pxr/imaging/cameraUtil/conformWindow.h"
24PXR_NAMESPACE_OPEN_SCOPE
31#define HD_CAMERA_TOKENS \
34 (horizontalAperture) \
36 (horizontalApertureOffset) \
37 (verticalApertureOffset) \
47 ((splitDiopterCount, "splitDiopter:count")) \
48 ((splitDiopterAngle, "splitDiopter:angle")) \
49 ((splitDiopterOffset1, "splitDiopter:offset1")) \
50 ((splitDiopterWidth1, "splitDiopter:width1")) \
51 ((splitDiopterFocusDistance1, "splitDiopter:focusDistance1")) \
52 ((splitDiopterOffset2, "splitDiopter:offset2")) \
53 ((splitDiopterWidth2, "splitDiopter:width2")) \
54 ((splitDiopterFocusDistance2, "splitDiopter:focusDistance2")) \
63 (exposureResponsivity) \
64 (linearExposureScale) \
72 ((lensDistortionType, "lensDistortion:type")) \
73 ((lensDistortionK1, "lensDistortion:k1")) \
74 ((lensDistortionK2, "lensDistortion:k2")) \
75 ((lensDistortionCenter, "lensDistortion:center")) \
76 ((lensDistortionAnaSq, "lensDistortion:anaSq")) \
77 ((lensDistortionAsym, "lensDistortion:asym")) \
78 ((lensDistortionScale, "lensDistortion:scale")) \
79 ((lensDistortionIor, "lensDistortion:ior"))
94 using ClipPlanesVector = std::vector<GfVec4d>;
102 enum DirtyBits : HdDirtyBits
105 DirtyTransform = 1 << 0,
106 DirtyParams = 1 << 1,
107 DirtyClipPlanes = 1 << 2,
108 DirtyWindowPolicy = 1 << 3,
109 AllDirty = (DirtyTransform
128 HdDirtyBits *dirtyBits)
override;
153 return _horizontalAperture;
158 return _verticalAperture;
163 return _horizontalApertureOffset;
168 return _verticalApertureOffset;
178 return _clippingRange;
193 return _focusDistance;
196 bool GetFocusOn()
const {
200 float GetDofAspect()
const {
204 int GetSplitDiopterCount()
const {
205 return _splitDiopterCount;
208 float GetSplitDiopterAngle()
const {
209 return _splitDiopterAngle;
212 float GetSplitDiopterOffset1()
const {
213 return _splitDiopterOffset1;
216 float GetSplitDiopterWidth1()
const {
217 return _splitDiopterWidth1;
220 float GetSplitDiopterFocusDistance1()
const {
221 return _splitDiopterFocusDistance1;
224 float GetSplitDiopterOffset2()
const {
225 return _splitDiopterOffset2;
228 float GetSplitDiopterWidth2()
const {
229 return _splitDiopterWidth2;
232 float GetSplitDiopterFocusDistance2()
const {
233 return _splitDiopterFocusDistance2;
236 double GetShutterOpen()
const {
240 double GetShutterClose()
const {
241 return _shutterClose;
261 return _linearExposureScale;
264 TfToken GetLensDistortionType()
const {
265 return _lensDistortionType;
268 float GetLensDistortionK1()
const {
269 return _lensDistortionK1;
272 float GetLensDistortionK2()
const {
273 return _lensDistortionK2;
276 const GfVec2f& GetLensDistortionCenter()
const {
277 return _lensDistortionCenter;
280 float GetLensDistortionAnaSq()
const {
281 return _lensDistortionAnaSq;
284 const GfVec2f& GetLensDistortionAsym()
const {
285 return _lensDistortionAsym;
288 float GetLensDistortionScale()
const {
289 return _lensDistortionScale;
292 float GetLensDistortionIor()
const {
293 return _lensDistortionIor;
299 return _windowPolicy;
314 Projection _projection;
315 float _horizontalAperture;
316 float _verticalAperture;
317 float _horizontalApertureOffset;
318 float _verticalApertureOffset;
321 std::vector<GfVec4d> _clipPlanes;
325 float _focusDistance;
328 int _splitDiopterCount;
329 float _splitDiopterAngle;
330 float _splitDiopterOffset1;
331 float _splitDiopterWidth1;
332 float _splitDiopterFocusDistance1;
333 float _splitDiopterOffset2;
334 float _splitDiopterWidth2;
335 float _splitDiopterFocusDistance2;
339 double _shutterClose;
345 float _exposureFStop;
346 float _exposureResponsivity;
347 float _linearExposureScale;
351 float _lensDistortionK1;
352 float _lensDistortionK2;
354 float _lensDistortionAnaSq;
356 float _lensDistortionScale;
357 float _lensDistortionIor;
361 CameraUtilConformWindowPolicy _windowPolicy;
364PXR_NAMESPACE_CLOSE_SCOPE
Stores a 4x4 matrix of double elements.
Basic type: 1-dimensional floating point range.
Basic type for a vector of 2 float components.
Hydra schema for a camera that pulls the params (see above) during Sync.
float GetHorizontalApertureOffset() const
Returns horizontal aperture offset in world units.
float GetFocusDistance() const
Returns focus distance in world units.
float GetHorizontalAperture() const
Returns horizontal aperture in world units.
HD_API void Sync(HdSceneDelegate *sceneDelegate, HdRenderParam *renderParam, HdDirtyBits *dirtyBits) override
Sprim API.
GfMatrix4d const & GetTransform() const
Camera parameters accessor API.
std::vector< GfVec4d > const & GetClipPlanes() const
Returns any additional clipping planes defined in camera space.
float GetLinearExposureScale() const
Get the computed linear exposure scale from the underlying camera.
float GetFStop() const
Returns fstop of camera.
float GetVerticalAperture() const
Returns vertical aperture in world units.
float GetFocalLength() const
Returns focal length in world units.
HD_API HdDirtyBits GetInitialDirtyBitsMask() const override
Returns the minimal set of dirty bits to place in the change tracker for use in the first sync of thi...
float GetVerticalApertureOffset() const
Returns vertical aperture offset in world units.
HD_API GfMatrix4d ComputeProjectionMatrix() const
Convenience API for rasterizers.
Projection GetProjection() const
Returns whether camera is orthographic and perspective.
GfRange1f const & GetClippingRange() const
Returns near and far plane in world units.
const CameraUtilConformWindowPolicy & GetWindowPolicy() const
Returns the window policy of the camera.
float GetExposure() const
Get the raw exposure exponent value.
The HdRenderParam is an opaque (to core Hydra) handle, to an object that is obtained from the render ...
Adapter class providing data exchange with the client scene graph.
Sprim (state prim) is a base class of managing state for non-drawable scene entity (e....
A path value used to locate objects in layers or scenegraphs.
Token for efficient comparison, assignment, and hashing of known strings.
This file defines some macros that are useful for declaring and using static TfTokens.
#define TF_DECLARE_PUBLIC_TOKENS(...)
Macro to define public tokens.