summaryrefslogtreecommitdiff
path: root/public/movieobjects/dmecamera.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/movieobjects/dmecamera.h')
-rw-r--r--public/movieobjects/dmecamera.h91
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