OpenBarnyard
 
Loading...
Searching...
No Matches
TRenderContext.h
Go to the documentation of this file.
1#pragma once
2#include "Math/Math.h"
3#include "Math/TSphere.h"
4#include "Toshi/TStack.h"
5
7
10class TCameraObject;
11
13
15{
16 inline static constexpr TINT MAX_NUM_LIGHTS = 4;
17
18 void Add( TLightID a_iLightId );
19 void Reset();
20
21 TLightID& operator[]( TINT a_iIndex );
22
24};
25
37
39
41{
42public:
43 typedef TUINT32 FLAG;
57
64
74
76 {
81
82 void SetFromFOV( TFLOAT a_fViewportWidth, TFLOAT a_fViewportHeight, TFLOAT a_fFOV, TFLOAT a_fNearPlane, TFLOAT a_fFarPlane );
83 };
84
85protected:
86 void SetDirty( TBOOL a_bDirty );
87 void SetFlag( FLAG a_eFlag, TBOOL a_bEnable );
88
89public:
91 virtual ~TRenderContext();
92
93 //-----------------------------------------------------------------------------
94 // Own methods
95 //-----------------------------------------------------------------------------
96 virtual void SetModelViewMatrix( const TMatrix44& a_rMatrix );
97 virtual void SetWorldViewMatrix( const TMatrix44& a_rMatrix );
98 virtual void Update() = 0;
99
100 void ClearLightIDs();
101 void AddLight( TLightID a_iLightId );
102
104 void SetProjectionParams( const PROJECTIONPARAMS& a_rParams );
105
107 void SetViewportParameters( const VIEWPORTPARAMS& a_rParams );
108
110 void SetCameraMode( CameraMode a_eCameraMode );
111
112 void EnableFog( TBOOL a_bEnable );
113 void SetFogDistance( TFLOAT a_fStart, TFLOAT a_fEnd );
114
115 TFLOAT GetX() const { return m_oViewportParams.fX; }
116 TFLOAT GetY() const { return m_oViewportParams.fY; }
117 TFLOAT GetWidth() const { return m_oViewportParams.fWidth; }
118 TFLOAT GetHeight() const { return m_oViewportParams.fHeight; }
119
120 TBOOL IsFogEnabled() const { return m_eFlags & FLAG_FOG; }
121 TBOOL IsDirty() const { return m_eFlags & FLAG_DIRTY; }
122
124 void SetSkeletonInstance( TSkeletonInstance* a_pSkeletonInstance ) { m_pCurrentSkeletonInstance = a_pSkeletonInstance; }
125
126 TUINT GetClipFlags() const;
127 TUINT SetClipFlags( TUINT a_uiClipFlags );
128
129 const TPlane* GetWorldPlanes();
130
137
138 const TPlane* GetFrustumPlanes() const { return m_aFrustumPlanes1; }
139
140 void SetCameraObject( TCameraObject* a_pCameraObject ) { m_pCurrentCameraObject = a_pCameraObject; }
142
144 void SetAlphaBlend( TFLOAT val ) { m_fAlphaBlend = val; }
145
147 void SetShadeCoeff( TFLOAT val ) { m_fShadeCoeff = val; }
148
149 const TVector4& GetAmbientColour() const { return m_AmbientColor; }
150
151 static void ComputePerspectiveProjection( TMatrix44& a_rOutProjection, const VIEWPORTPARAMS& a_rViewportParams, const PROJECTIONPARAMS& a_rProjParams );
152 static void ComputeOrthographicProjection( TMatrix44& a_rOutProjection, const VIEWPORTPARAMS& a_rViewportParams, const PROJECTIONPARAMS& a_rProjParams );
153
154 static void ComputePerspectiveFrustum( TFrustum& a_rcFrustum, const VIEWPORTPARAMS& a_rViewportParams, const PROJECTIONPARAMS& a_rProjParams );
155 static void ComputeOrthographicFrustum( TFrustum& a_rcFrustum, const VIEWPORTPARAMS& a_rViewportParams, const PROJECTIONPARAMS& a_rProjParams );
156
157 static TBOOL CullSphereToFrustumSimple( const TSphere& a_rSphere, const TPlane* a_pPlanes, TINT a_iNumPlanes );
158 static TINT CullSphereToFrustum( const TSphere& a_rSphere, const TPlane* a_pPlanes, TINT a_iClipFlags, TINT a_iClipFlagsMask );
159
160#ifndef TOSHI_SDK
161protected:
162#endif
163
165 FLAG m_eFlags; // 0x0008
167 TUINT m_Unk; // 0x0010
178 // ...
184 // ...
188 // ...
190 // TBOOL
193};
194
TPlane[WORLDPLANE_NUMOF] TFrustum
TINT8 TLightID
WORLDPLANE_
@ WORLDPLANE_BOTTOM
@ WORLDPLANE_NUMOF
@ WORLDPLANE_TOP
@ WORLDPLANE_RIGHT
@ WORLDPLANE_FAR
@ WORLDPLANE_NEAR
@ WORLDPLANE_LEFT
TUINT32 WORLDPLANE
#define BITFLAG(x)
Definition Defines.h:10
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
unsigned int TUINT
Definition Typedefs.h:8
float TFLOAT
Definition Typedefs.h:4
uint32_t TUINT32
Definition Typedefs.h:13
int TINT
Definition Typedefs.h:7
bool TBOOL
Definition Typedefs.h:6
int8_t TINT8
Definition Typedefs.h:16
Definition TPlane.h:7
TLightID aIDs[MAX_NUM_LIGHTS]
TLightID & operator[](TINT a_iIndex)
void Add(TLightID a_iLightId)
static constexpr TINT MAX_NUM_LIGHTS
PROJECTIONPARAMS m_oProjParams
static TBOOL CullSphereToFrustumSimple(const TSphere &a_rSphere, const TPlane *a_pPlanes, TINT a_iNumPlanes)
TRenderContext(TRenderInterface *pRender)
TMatrix44 m_oViewWorldMatrix
void SetSkeletonInstance(TSkeletonInstance *a_pSkeletonInstance)
void SetShadeCoeff(TFLOAT val)
TFLOAT GetAlphaBlend() const
TFLOAT GetHeight() const
TSkeletonInstance * GetSkeletonInstance() const
virtual void Update()=0
CameraMode GetCameraMode()
void SetProjectionParams(const PROJECTIONPARAMS &a_rParams)
TVector4 m_AmbientColor
virtual ~TRenderContext()
CameraMode m_eCameraMode
TFLOAT GetShadeCoeff() const
const PROJECTIONPARAMS & GetProjectionParams() const
static void ComputeOrthographicFrustum(TFrustum &a_rcFrustum, const VIEWPORTPARAMS &a_rViewportParams, const PROJECTIONPARAMS &a_rProjParams)
TUINT SetClipFlags(TUINT a_uiClipFlags)
void SetFlag(FLAG a_eFlag, TBOOL a_bEnable)
virtual void SetWorldViewMatrix(const TMatrix44 &a_rMatrix)
TMatrix44 & GetModelViewMatrix()
TFrustum m_aFrustumPlanes1
TFLOAT m_fFogDistanceStart
TFrustum m_aWorldPlanes
TBOOL IsFogEnabled() const
const TPlane * GetWorldPlanes()
const TPlane * GetFrustumPlanes() const
const TMatrix44 & GetModelWorldMatrix()
void SetViewportParameters(const VIEWPORTPARAMS &a_rParams)
const VIEWPORTPARAMS & GetViewportParameters() const
VIEWPORTPARAMS m_oViewportParams
static void ComputeOrthographicProjection(TMatrix44 &a_rOutProjection, const VIEWPORTPARAMS &a_rViewportParams, const PROJECTIONPARAMS &a_rProjParams)
TMatrix44 m_oModelWorldMatrix
TMatrix44 m_oWorldViewMatrix
static TINT CullSphereToFrustum(const TSphere &a_rSphere, const TPlane *a_pPlanes, TINT a_iClipFlags, TINT a_iClipFlagsMask)
void SetCameraObject(TCameraObject *a_pCameraObject)
const TVector4 & GetAmbientColour() const
TMatrix44 m_oModelViewMatrix
void AddLight(TLightID a_iLightId)
TFLOAT GetWidth() const
TCameraObject * GetCameraObject() const
void SetFogDistance(TFLOAT a_fStart, TFLOAT a_fEnd)
TLightIDList m_oLightIds
TUINT GetClipFlags() const
TFLOAT GetX() const
void SetDirty(TBOOL a_bDirty)
virtual void SetModelViewMatrix(const TMatrix44 &a_rMatrix)
TRenderInterface * m_pRenderer
TFrustum m_aFrustumPlanes2
TMatrix44 & GetWorldViewMatrix()
TSkeletonInstance * m_pCurrentSkeletonInstance
static void ComputePerspectiveProjection(TMatrix44 &a_rOutProjection, const VIEWPORTPARAMS &a_rViewportParams, const PROJECTIONPARAMS &a_rProjParams)
static void ComputePerspectiveFrustum(TFrustum &a_rcFrustum, const VIEWPORTPARAMS &a_rViewportParams, const PROJECTIONPARAMS &a_rProjParams)
TFLOAT GetY() const
TBOOL IsDirty() const
const TMatrix44 & GetViewWorldMatrix()
const TMatrix44 & GetWorldModelMatrix()
void EnableFog(TBOOL a_bEnable)
const TMatrix44 & GetViewModelMatrix()
TMatrix44 m_oWorldModelMatrix
TCameraObject * m_pCurrentCameraObject
void SetCameraMode(CameraMode a_eCameraMode)
TMatrix44 m_oViewModelMatrix
void SetAlphaBlend(TFLOAT val)
void SetFromFOV(TFLOAT a_fViewportWidth, TFLOAT a_fViewportHeight, TFLOAT a_fFOV, TFLOAT a_fNearPlane, TFLOAT a_fFarPlane)