24#ifndef PXR_IMAGING_HD_CAMERA_H
25#define PXR_IMAGING_HD_CAMERA_H
28#include "pxr/imaging/hd/api.h"
29#include "pxr/imaging/hd/version.h"
30#include "pxr/imaging/hd/sprim.h"
32#include "pxr/imaging/cameraUtil/conformWindow.h"
41PXR_NAMESPACE_OPEN_SCOPE
48#define HD_CAMERA_TOKENS \
51 (horizontalAperture) \
53 (horizontalApertureOffset) \
54 (verticalApertureOffset) \
64 ((splitDiopterCount, "splitDiopter:count")) \
65 ((splitDiopterAngle, "splitDiopter:angle")) \
66 ((splitDiopterOffset1, "splitDiopter:offset1")) \
67 ((splitDiopterWidth1, "splitDiopter:width1")) \
68 ((splitDiopterFocusDistance1, "splitDiopter:focusDistance1")) \
69 ((splitDiopterOffset2, "splitDiopter:offset2")) \
70 ((splitDiopterWidth2, "splitDiopter:width2")) \
71 ((splitDiopterFocusDistance2, "splitDiopter:focusDistance2")) \
84 ((lensDistortionType, "lensDistortion:type")) \
85 ((lensDistortionK1, "lensDistortion:k1")) \
86 ((lensDistortionK2, "lensDistortion:k2")) \
87 ((lensDistortionCenter, "lensDistortion:center")) \
88 ((lensDistortionAnaSq, "lensDistortion:anaSq")) \
89 ((lensDistortionAsym, "lensDistortion:asym")) \
90 ((lensDistortionScale, "lensDistortion:scale")) \
91 ((lensDistortionIor, "lensDistortion:ior"))
106 using ClipPlanesVector = std::vector<GfVec4d>;
114 enum DirtyBits : HdDirtyBits
117 DirtyTransform = 1 << 0,
118 DirtyParams = 1 << 1,
119 DirtyClipPlanes = 1 << 2,
120 DirtyWindowPolicy = 1 << 3,
121 AllDirty = (DirtyTransform
140 HdDirtyBits *dirtyBits)
override;
165 return _horizontalAperture;
170 return _verticalAperture;
175 return _horizontalApertureOffset;
180 return _verticalApertureOffset;
190 return _clippingRange;
205 return _focusDistance;
208 bool GetFocusOn()
const {
212 float GetDofAspect()
const {
216 int GetSplitDiopterCount()
const {
217 return _splitDiopterCount;
220 float GetSplitDiopterAngle()
const {
221 return _splitDiopterAngle;
224 float GetSplitDiopterOffset1()
const {
225 return _splitDiopterOffset1;
228 float GetSplitDiopterWidth1()
const {
229 return _splitDiopterWidth1;
232 float GetSplitDiopterFocusDistance1()
const {
233 return _splitDiopterFocusDistance1;
236 float GetSplitDiopterOffset2()
const {
237 return _splitDiopterOffset2;
240 float GetSplitDiopterWidth2()
const {
241 return _splitDiopterWidth2;
244 float GetSplitDiopterFocusDistance2()
const {
245 return _splitDiopterFocusDistance2;
248 double GetShutterOpen()
const {
252 double GetShutterClose()
const {
253 return _shutterClose;
256 float GetExposure()
const {
260 TfToken GetLensDistortionType()
const {
261 return _lensDistortionType;
264 float GetLensDistortionK1()
const {
265 return _lensDistortionK1;
268 float GetLensDistortionK2()
const {
269 return _lensDistortionK2;
272 const GfVec2f& GetLensDistortionCenter()
const {
273 return _lensDistortionCenter;
276 float GetLensDistortionAnaSq()
const {
277 return _lensDistortionAnaSq;
280 const GfVec2f& GetLensDistortionAsym()
const {
281 return _lensDistortionAsym;
284 float GetLensDistortionScale()
const {
285 return _lensDistortionScale;
288 float GetLensDistortionIor()
const {
289 return _lensDistortionIor;
295 return _windowPolicy;
310 Projection _projection;
311 float _horizontalAperture;
312 float _verticalAperture;
313 float _horizontalApertureOffset;
314 float _verticalApertureOffset;
317 std::vector<GfVec4d> _clipPlanes;
321 float _focusDistance;
324 int _splitDiopterCount;
325 float _splitDiopterAngle;
326 float _splitDiopterOffset1;
327 float _splitDiopterWidth1;
328 float _splitDiopterFocusDistance1;
329 float _splitDiopterOffset2;
330 float _splitDiopterWidth2;
331 float _splitDiopterFocusDistance2;
335 double _shutterClose;
340 float _lensDistortionK1;
341 float _lensDistortionK2;
343 float _lensDistortionAnaSq;
345 float _lensDistortionScale;
346 float _lensDistortionIor;
350 CameraUtilConformWindowPolicy _windowPolicy;
353PXR_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 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.
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.