389 const Matrix4& viewMatrix = Matrix4::IDENTITY);
392 {
return mCustomViewMatrix; }
416 const Matrix4& projectionMatrix = Matrix4::IDENTITY);
419 {
return mCustomProjMatrix; }
652 {
return mObliqueDepthProjection; }
656 bool debugRenderables =
false);
A 3D box aligned with the x/y/z axes.
A viewpoint from which the scene will be rendered.
A frustum represents a pyramid, capped at the near and far end which is used to represent either a vi...
Plane mLastLinkedReflectionPlane
Record of the last world-space reflection plane info used.
void _updateRenderQueue(RenderQueue *queue)
Overridden from MovableObject.
Real mOrthoHeight
Ortho height size (world units)
virtual void setFrustumOffset(Real horizontal=0.0, Real vertical=0.0)
Sets frustum offsets, used in stereo rendering.
virtual void setCustomProjectionMatrix(bool enable, const Matrix4 &projectionMatrix=Matrix4::IDENTITY)
Set whether to use a custom projection matrix on this frustum.
virtual bool isVisible(const AxisAlignedBox &bound, FrustumPlane *culledBy=0) const
Tests whether the given container is visible in the Frustum.
virtual bool isCustomViewMatrixEnabled(void) const
Returns whether a custom view matrix is in use.
virtual Real getAspectRatio(void) const
Retrieves the current aspect ratio.
void getWorldTransforms(Matrix4 *xform) const
Overridden from Renderable.
virtual void enableCustomNearClipPlane(const MovablePlane *plane)
Links the frustum to a custom near clip plane, which can be used to clip geometry in a custom manner ...
void setOrientationMode(OrientationMode orientationMode)
Set the orientation mode of the frustum.
virtual void updateVertexData(void) const
virtual void enableCustomNearClipPlane(const Plane &plane)
Links the frustum to a custom near clip plane, which can be used to clip geometry in a custom manner ...
Real mFocalLength
Focal length of frustum (for stereo rendering, defaults to 1.0)
Plane mLastLinkedObliqueProjPlane
Record of the last world-space oblique depth projection plane info used.
bool mRecalcFrustumPlanes
Something re the frustum planes has changed.
void visitRenderables(Renderable::Visitor *visitor, bool debugRenderables=false)
Method to allow a caller to abstractly iterate over the Renderable instances that this MovableObject ...
virtual const Vector2 & getFrustumOffset() const
Retrieves the frustum offsets.
virtual void updateWorldSpaceCorners(void) const
virtual void getFrustumExtents(Real &outleft, Real &outright, Real &outtop, Real &outbottom) const
Get the extents of the frustum in view space.
virtual void invalidateView(void) const
Signal to update view information.
bool mRecalcVertexData
Something re the vertex data has changed.
bool mRecalcFrustum
Something's changed in the frustum shape?
ProjectionType mProjType
Orthographic or perspective?
Matrix4 mProjMatrixRS
Pre-calced projection matrix for the specific render system.
Real mAspect
x/y viewport ratio - default 1.3333
virtual bool isFrustumOutOfDate(void) const
virtual void setOrthoWindowWidth(Real w)
Sets the orthographic window width, for use with orthographic rendering only.
virtual void disableReflection(void)
Disables reflection modification previously turned on with enableReflection.
virtual void setAspectRatio(Real ratio)
Sets the aspect ratio for the frustum viewport.
Real mNearDist
Near clip distance - default 100.
virtual const Radian & getFOVy(void) const
Retrieves the frustums Y-dimension Field Of View (FOV).
virtual void updateView(void) const
Update view if out of date.
bool mReflect
Is this frustum to act as a reflection of itself?
bool mCustomViewMatrix
Are we using a custom view matrix?
bool mFrustumExtentsManuallySet
Have the frustum extents been manually set?
Plane mObliqueProjPlane
Fixed oblique projection plane.
const MaterialPtr & getMaterial(void) const
Overridden from Renderable.
virtual bool isCustomProjectionMatrixEnabled(void) const
Returns whether a custom projection matrix is in use.
Radian mFOVy
y-direction field-of-view (default 45)
virtual void enableReflection(const Plane &p)
Modifies this frustum so it always renders from the reflection of itself through the plane specified.
virtual void disableCustomNearClipPlane(void)
Disables any custom near clip plane.
virtual Real getFarClipDistance(void) const
Retrieves the distance from the frustum to the far clipping plane.
virtual bool isVisible(const Sphere &bound, FrustumPlane *culledBy=0) const
Tests whether the given container is visible in the Frustum.
virtual void updateViewImpl(void) const
Implementation of updateView (called if out of date)
Vector3 mLastParentPosition
Vector2 mFrustumOffset
Off-axis frustum center offset - default (0.0, 0.0)
virtual ProjectionType getProjectionType(void) const
Retrieves info on the type of projection used (orthographic or perspective).
virtual void updateFrustumImpl(void) const
Implementation of updateFrustum (called if out of date)
virtual void setNearClipDistance(Real nearDist)
Sets the position of the near clipping plane.
virtual void updateFrustumPlanes(void) const
Real getSquaredViewDepth(const Camera *cam) const
Overridden from Renderable.
virtual bool isReflected(void) const
Returns whether this frustum is being reflected.
virtual void setFrustumExtents(Real left, Real right, Real top, Real bottom)
Manually set the extents of the frustum.
virtual void resetFrustumExtents()
Reset the frustum extents to be automatically derived from other params.
virtual void setCustomViewMatrix(bool enable, const Matrix4 &viewMatrix=Matrix4::IDENTITY)
Set whether to use a custom view matrix on this frustum.
virtual bool projectSphere(const Sphere &sphere, Real *left, Real *top, Real *right, Real *bottom) const
Project a sphere onto the near plane and get the bounding rectangle.
virtual const Vector3 & getPositionForViewUpdate(void) const
Get the derived position of this frustum.
Frustum(const String &name=StringUtil::BLANK)
Named constructor.
virtual void calcViewMatrixRelative(const Vector3 &relPos, Matrix4 &matToUpdate) const
Calculate a view matrix for this frustum, relative to a potentially dynamic point.
PlaneBoundedVolume getPlaneBoundedVolume()
Gets a world-space list of planes enclosing the frustum.
virtual void updateFrustumPlanesImpl(void) const
Implementation of updateFrustumPlanes (called if out of date)
virtual const Matrix4 & getReflectionMatrix(void) const
Returns the reflection matrix of the frustum if appropriate.
Matrix4 mProjMatrixRSDepth
Pre-calced standard projection matrix but with render system depth range.
virtual const Plane & getReflectionPlane(void) const
Returns the reflection plane of the frustum if appropriate.
AxisAlignedBox mBoundingBox
Real mFarDist
Far clip distance - default 10000.
virtual void enableReflection(const MovablePlane *p)
Modifies this frustum so it always renders from the reflection of itself through the plane specified.
Matrix4 mProjMatrix
Pre-calced standard projection matrix.
virtual void calcProjectionParameters(Real &left, Real &right, Real &bottom, Real &top) const
virtual const Matrix4 & getViewMatrix(void) const
Gets the view matrix for this frustum.
virtual Real getOrthoWindowWidth() const
Gets the orthographic window width, for use with orthographic rendering only.
virtual void setFarClipDistance(Real farDist)
Sets the distance to the far clipping plane.
const String & getMovableType(void) const
Overridden from MovableObject.
virtual void invalidateFrustum(void) const
Signal to update frustum information.
virtual void setFrustumOffset(const Vector2 &offset)
Sets frustum offsets, used in stereo rendering.
virtual const Matrix4 & getProjectionMatrix(void) const
Gets the normal projection matrix for this frustum, ie the projection matrix which conforms to standa...
virtual void setFOVy(const Radian &fovy)
Sets the Y-dimension Field Of View (FOV) of the frustum.
virtual const Matrix4 & getProjectionMatrixWithRSDepth(void) const
Gets the depth-adjusted projection matrix for the current rendersystem, but one which still conforms ...
const MovablePlane * mLinkedObliqueProjPlane
Pointer to oblique projection plane (automatically updated)
uint32 getTypeFlags(void) const
Overridden from MovableObject::getTypeFlags.
const LightList & getLights(void) const
Overridden from Renderable.
const MovablePlane * mLinkedReflectPlane
Pointer to a reflection plane (automatically updated)
virtual bool isVisible(const Vector3 &vert, FrustumPlane *culledBy=0) const
Tests whether the given vertex is visible in the Frustum.
bool mObliqueDepthProjection
Is this frustum using an oblique depth projection?
virtual bool isViewOutOfDate(void) const
bool mRecalcWorldSpaceCorners
Something re the world space corners has changed.
virtual const Vector3 * getWorldSpaceCorners(void) const
Gets the world space corners of the frustum.
virtual void setProjectionType(ProjectionType pt)
Sets the type of projection to use (orthographic or perspective).
virtual void setFocalLength(Real focalLength=1.0)
Sets frustum focal length (used in stereo rendering).
virtual const Plane * getFrustumPlanes(void) const
Retrieves the clipping planes of the frustum (world space).
void getRenderOperation(RenderOperation &op)
Overridden from Renderable.
static const Real INFINITE_FAR_PLANE_ADJUST
Small constant used to reduce far plane projection to avoid inaccuracies.
virtual void setOrthoWindow(Real w, Real h)
Sets the orthographic window settings, for use with orthographic rendering only.
bool mCustomProjMatrix
Are we using a custom projection matrix?
void _notifyCurrentCamera(Camera *cam)
Overridden from MovableObject.
virtual Real getNearClipDistance(void) const
Sets the position of the near clipping plane.
virtual const Plane & getFrustumPlane(unsigned short plane) const
Retrieves a specified plane of the frustum (world space).
virtual void updateWorldSpaceCornersImpl(void) const
Implementation of updateWorldSpaceCorners (called if out of date)
Real getBoundingRadius(void) const
Overridden from MovableObject.
Matrix4 mReflectMatrix
Derived reflection matrix.
static String msMovableType
Shared class-level name for Movable type.
virtual const Matrix4 & getProjectionMatrixRS(void) const
Gets the projection matrix for this frustum adjusted for the current rendersystem specifics (may be r...
Plane mReflectPlane
Fixed reflection plane.
Matrix4 mViewMatrix
Pre-calced view matrix.
virtual const Quaternion & getOrientationForViewUpdate(void) const
Get the derived orientation of this frustum.
virtual Real getFocalLength() const
Returns focal length of frustum.
virtual Real getOrthoWindowHeight() const
Gets the orthographic window height, for use with orthographic rendering only.
virtual void updateFrustum(void) const
Update frustum if out of date.
OrientationMode mOrientationMode
Frustum orientation mode.
virtual bool isCustomNearClipPlaneEnabled(void) const
Is a custom near clip plane in use?
virtual void setOrthoWindowHeight(Real h)
Sets the orthographic window height, for use with orthographic rendering only.
OrientationMode getOrientationMode() const
Get the orientation mode of the frustum.
bool mRecalcView
Something re the view pos has changed.
Quaternion mLastParentOrientation
Stored versions of parent orientation / position.
const AxisAlignedBox & getBoundingBox(void) const
Overridden from MovableObject.
Class encapsulating a standard 4x4 homogeneous matrix.
Abstract class defining a movable object in a scene.
Definition of a Plane that may be attached to a node, and the derived details of it retrieved simply.
Represents a convex volume bounded by planes.
Defines a plane in 3D space.
Implementation of a Quaternion, i.e.
Wrapper class which indicates a given angle value is in Radians.
'New' rendering operation using vertex buffers.
Class to manage the scene object rendering queue.
Visitor object that can be used to iterate over a collection of Renderable instances abstractly.
Abstract class defining the interface all renderable objects must implement.
A sphere primitive, mostly used for bounds checking.
Standard 2-dimensional vector.
Standard 3-dimensional vector.
Summary class collecting together vertex source information.
FrustumPlane
Worldspace clipping planes.
OrientationMode
Specifies orientation mode.
ProjectionType
Specifies perspective (realistic) or orthographic (architectural) projection.
float Real
Software floating point type.