diff options
Diffstat (limited to 'public/movieobjects/dmecamera.h')
| -rw-r--r-- | public/movieobjects/dmecamera.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/public/movieobjects/dmecamera.h b/public/movieobjects/dmecamera.h new file mode 100644 index 0000000..2496025 --- /dev/null +++ b/public/movieobjects/dmecamera.h @@ -0,0 +1,91 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// A class representing a camera +// +//============================================================================= + +#ifndef DMECAMERA_H +#define DMECAMERA_H +#ifdef _WIN32 +#pragma once +#endif + +#include "movieobjects/dmedag.h" +#include "movieobjects/timeutils.h" + + +//----------------------------------------------------------------------------- +// A class representing a camera +//----------------------------------------------------------------------------- +class CDmeCamera : public CDmeDag +{ + DEFINE_ELEMENT( CDmeCamera, CDmeDag ); + +public: + // Sets up render state in the material system for rendering + // This includes the view matrix and the projection matrix + void SetupRenderState( int nDisplayWidth, int nDisplayHeight, bool bUseEngineCoordinateSystem = false ); + + // accessors for generated matrices + void GetViewMatrix( VMatrix &view, bool bUseEngineCoordinateSystem = false ); + void GetProjectionMatrix( VMatrix &proj, int width, int height ); + void GetViewProjectionInverse( VMatrix &viewprojinv, int width, int height ); + void ComputeScreenSpacePosition( const Vector &vecWorldPosition, int width, int height, Vector2D *pScreenPosition ); + + // Returns the x FOV (the full angle) + float GetFOVx() const; + void SetFOVx( float fov ); + + // Returns the focal distance in inches + float GetFocalDistance() const; + + // Sets the focal distance in inches + void SetFocalDistance( const float &fFocalDistance ); + + // Returns the aperture size in inches + float GetAperture() const; + + // Returns the shutter speed in seconds + float GetShutterSpeed() const; + + // Returns the tone map scale + float GetToneMapScale() const; + + // Returns the tone map scale + float GetBloomScale() const; + + // Returns the view direction + void GetViewDirection( Vector *pDirection ); + + // Returns Depth of Field quality level + int GetDepthOfFieldQuality() const; + + // Returns the Motion Blur quality level + int GetMotionBlurQuality() const; + +private: + // Loads the material system view matrix based on the transform + void LoadViewMatrix( bool bUseEngineCoordinateSystem ); + + // Loads the material system projection matrix based on the fov, etc. + void LoadProjectionMatrix( int nDisplayWidth, int nDisplayHeight ); + + // Sets the studiorender state + void LoadStudioRenderCameraState(); + + CDmaVar< float > m_fieldOfView; + CDmaVar< float > m_zNear; + CDmaVar< float > m_zFar; + + CDmaVar< float > m_fFocalDistance; + CDmaVar< float > m_fAperture; + CDmaVar< float > m_fShutterSpeed; + CDmaVar< float > m_fToneMapScale; + CDmaVar< float > m_fBloomScale; + + CDmaVar< int > m_nDoFQuality; + CDmaVar< int > m_nMotionBlurQuality; +}; + + +#endif // DMECAMERA_H |