Pyrogenesis  trunk
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends | List of all members
CRenderer Class Reference

#include <Renderer.h>

Inheritance diagram for CRenderer:
Inheritance graph
[legend]
Collaboration diagram for CRenderer:
Collaboration graph
[legend]

Classes

struct  Caps
 
struct  Options
 
struct  Stats
 

Public Types

enum  { NumAlphaMaps =14 }
 
enum  Option {
  OPT_NOVBO, OPT_SHADOWS, OPT_WATERUGLY, OPT_WATERFANCYEFFECTS,
  OPT_WATERREALDEPTH, OPT_WATERREFLECTION, OPT_WATERREFRACTION, OPT_SHADOWSONWATER,
  OPT_SHADOWPCF, OPT_PARTICLES, OPT_PREFERGLSL, OPT_SILHOUETTES,
  OPT_SHOWSKY, OPT_SMOOTHLOS, OPT_POSTPROC, OPT_DISPLAYFRUSTUM
}
 
enum  CullGroup {
  CULL_DEFAULT, CULL_SHADOWS, CULL_REFLECTIONS, CULL_REFRACTIONS,
  CULL_SILHOUETTE_OCCLUDER, CULL_SILHOUETTE_CASTER, CULL_MAX
}
 
enum  RenderPath { RP_DEFAULT, RP_FIXED, RP_SHADER }
 

Public Member Functions

 CRenderer ()
 
 ~CRenderer ()
 
bool Open (int width, int height)
 
void Resize (int width, int height)
 
void SetOptionBool (enum Option opt, bool value)
 
bool GetOptionBool (enum Option opt) const
 
void SetRenderPath (RenderPath rp)
 
RenderPath GetRenderPath () const
 
int GetWidth () const
 
int GetHeight () const
 
float GetAspect () const
 
void BeginFrame ()
 
void EndFrame ()
 
void SetSimulation (CSimulation2 *simulation)
 Set simulation context for rendering purposes. More...
 
void SetClearColor (SColor4ub color)
 
void MakeShadersDirty ()
 
void SetSceneCamera (const CCamera &viewCamera, const CCamera &cullCamera)
 Set up the camera used for rendering the next scene; this includes setting OpenGL state like viewport, projection and modelview matrices. More...
 
void SetViewport (const SViewPort &)
 
SViewPort GetViewport ()
 
void RenderScene (Scene &scene)
 Render the given scene immediately. More...
 
SceneGetScene ()
 Return the scene that is currently being rendered. More...
 
void RenderTextOverlays ()
 Render text overlays on top of the scene. More...
 
void SetLightEnv (CLightEnv *lightenv)
 
void SetTerrainRenderMode (ERenderMode mode)
 
ERenderMode GetTerrainRenderMode () const
 
void SetModelRenderMode (ERenderMode mode)
 
ERenderMode GetModelRenderMode () const
 
void SetDisplayTerrainPriorities (bool enabled)
 
void BindTexture (int unit, unsigned int tex)
 
int LoadAlphaMaps ()
 
void UnloadAlphaMaps ()
 
StatsGetStats ()
 
const CLightEnvGetLightEnv ()
 
const CCameraGetViewCamera () const
 
void SetViewCamera (const CCamera &camera)
 
const CCameraGetCullCamera () const
 
WaterManagerGetWaterManager ()
 GetWaterManager: Return the renderer's water manager. More...
 
SkyManagerGetSkyManager ()
 GetSkyManager: Return the renderer's sky manager. More...
 
CTextureManagerGetTextureManager ()
 
CShaderManagerGetShaderManager ()
 
CParticleManagerGetParticleManager ()
 
TerrainRendererGetTerrainRenderer ()
 
CMaterialManagerGetMaterialManager ()
 
CFontManagerGetFontManager ()
 
CShaderDefines GetSystemShaderDefines ()
 
CTimeManagerGetTimeManager ()
 
CPostprocManagerGetPostprocManager ()
 
const CapsGetCapabilities () const
 GetCapabilities: Return which OpenGL capabilities are available and enabled. More...
 
void ResetState ()
 Resets the render state to default, that was before a game started. More...
 
- Public Member Functions inherited from Singleton< CRenderer >
 Singleton ()
 
 ~Singleton ()
 

Static Public Member Functions

static CStr GetRenderPathName (RenderPath rp)
 
static RenderPath GetRenderPathByName (const CStr &name)
 
static void RegisterScriptFunctions (ScriptInterface &scriptInterface)
 
- Static Public Member Functions inherited from Singleton< CRenderer >
static CRendererGetSingleton ()
 
static CRendererGetSingletonPtr ()
 
static bool IsInitialised ()
 

Public Attributes

struct CRenderer::Options m_Options
 
float m_ShadowZBias
 m_ShadowZBias: Z bias used when rendering shadows into a depth texture. More...
 
int m_ShadowMapSize
 m_ShadowMapSize: Size of shadow map, or 0 for default. More...
 
bool m_SkipSubmit
 m_SkipSubmit: Disable the actual submission of rendering commands to OpenGL. More...
 
float u0
 
float u1
 
float v0
 
float v1
 

Protected Member Functions

void Submit (CPatch *patch)
 Submit a terrain patch that is part of the scene. More...
 
void Submit (SOverlayLine *overlay)
 Submit a line-based overlay. More...
 
void Submit (SOverlayTexturedLine *overlay)
 Submit a textured line overlay. More...
 
void Submit (SOverlaySprite *overlay)
 Submit a sprite overlay. More...
 
void Submit (SOverlayQuad *overlay)
 Submit a textured quad overlay. More...
 
void Submit (CModelDecal *decal)
 Submit a terrain decal. More...
 
void Submit (CParticleEmitter *emitter)
 Submit a particle emitter. More...
 
void Submit (SOverlaySphere *overlay)
 Submit a sphere overlay. More...
 
void SubmitNonRecursive (CModel *model)
 Submit a model that is part of the scene, without submitting attached models. More...
 
void RenderSubmissions (const CBoundingBoxAligned &waterScissor)
 
void RenderPatches (const CShaderDefines &context, int cullGroup)
 
void RenderModels (const CShaderDefines &context, int cullGroup)
 
void RenderTransparentModels (const CShaderDefines &context, int cullGroup, ETransparentMode transparentMode, bool disableFaceCulling)
 
void RenderSilhouettes (const CShaderDefines &context)
 
void RenderParticles (int cullGroup)
 
void RenderShadowMap (const CShaderDefines &context)
 
void RenderReflections (const CShaderDefines &context, const CBoundingBoxAligned &scissor)
 
void RenderRefractions (const CShaderDefines &context, const CBoundingBoxAligned &scissor)
 
void ComputeReflectionCamera (CCamera &camera, const CBoundingBoxAligned &scissor) const
 
void ComputeRefractionCamera (CCamera &camera, const CBoundingBoxAligned &scissor) const
 
void DisplayFrustum ()
 
void SetObliqueFrustumClipping (CCamera &camera, const CVector4D &clipPlane) const
 
void ReloadShaders ()
 
void RecomputeSystemShaderDefines ()
 
void EnumCaps ()
 

Static Protected Member Functions

static Status ReloadChangedFileCB (void *param, const VfsPath &path)
 

Protected Attributes

CRendererInternalsm
 Private data that is not needed by inline functions. More...
 
int m_Width
 
int m_Height
 
ERenderMode m_TerrainRenderMode
 
ERenderMode m_ModelRenderMode
 
CShaderDefines m_SystemShaderDefines
 
SViewPort m_Viewport
 
CCamera m_ViewCamera
 m_ViewCamera: determines the eye position for rendering More...
 
CCamera m_CullCamera
 m_CullCamera: determines the frustum for culling and shadowmap calculations More...
 
Scenem_CurrentScene
 
int m_CurrentCullGroup
 
float m_ClearColor [4]
 
CLightEnvm_LightEnv
 
Handle m_hCompositeAlphaMap
 
struct {
   float   u0
 
   float   u1
 
   float   v0
 
   float   v1
 
m_AlphaMapCoords [NumAlphaMaps]
 
Caps m_Caps
 
Stats m_Stats
 
WaterManagerm_WaterManager
 m_WaterManager: the WaterManager object used for water textures and settings (e.g. More...
 
SkyManagerm_SkyManager
 m_SkyManager: the SkyManager object used for sky textures and settings More...
 
bool m_DisplayTerrainPriorities
 Enable rendering of terrain tile priority text overlay, for debugging. More...
 

Friends

struct CRendererInternals
 
class CVertexBuffer
 
class CPatchRData
 
class CDecalRData
 
class FixedFunctionModelRenderer
 
class ModelRenderer
 
class PolygonSortModelRenderer
 
class SortModelRenderer
 
class RenderPathVertexShader
 
class HWLightingModelRenderer
 
class ShaderModelVertexRenderer
 
class InstancingModelRenderer
 
class ShaderInstancingModelRenderer
 
class TerrainRenderer
 
class WaterRenderer
 

Additional Inherited Members

- Private Member Functions inherited from SceneCollector
virtual ~SceneCollector ()
 
virtual void SubmitRecursive (CModelAbstract *model)
 Submit a model that is part of the scene, including attached sub-models. More...
 

Member Enumeration Documentation

anonymous enum
Enumerator
NumAlphaMaps 
Enumerator
CULL_DEFAULT 
CULL_SHADOWS 
CULL_REFLECTIONS 
CULL_REFRACTIONS 
CULL_SILHOUETTE_OCCLUDER 
CULL_SILHOUETTE_CASTER 
CULL_MAX 
Enumerator
OPT_NOVBO 
OPT_SHADOWS 
OPT_WATERUGLY 
OPT_WATERFANCYEFFECTS 
OPT_WATERREALDEPTH 
OPT_WATERREFLECTION 
OPT_WATERREFRACTION 
OPT_SHADOWSONWATER 
OPT_SHADOWPCF 
OPT_PARTICLES 
OPT_PREFERGLSL 
OPT_SILHOUETTES 
OPT_SHOWSKY 
OPT_SMOOTHLOS 
OPT_POSTPROC 
OPT_DISPLAYFRUSTUM 
Enumerator
RP_DEFAULT 
RP_FIXED 
RP_SHADER 

Constructor & Destructor Documentation

CRenderer::CRenderer ( )
CRenderer::~CRenderer ( )

Member Function Documentation

void CRenderer::BeginFrame ( )
void CRenderer::BindTexture ( int  unit,
unsigned int  tex 
)
void CRenderer::ComputeReflectionCamera ( CCamera camera,
const CBoundingBoxAligned scissor 
) const
protected
void CRenderer::ComputeRefractionCamera ( CCamera camera,
const CBoundingBoxAligned scissor 
) const
protected
void CRenderer::DisplayFrustum ( )
protected
void CRenderer::EndFrame ( )
void CRenderer::EnumCaps ( )
protected
float CRenderer::GetAspect ( ) const
inline
const Caps& CRenderer::GetCapabilities ( ) const
inline

GetCapabilities: Return which OpenGL capabilities are available and enabled.

Returns
capabilities structure
const CCamera& CRenderer::GetCullCamera ( ) const
inline
CFontManager & CRenderer::GetFontManager ( )
int CRenderer::GetHeight ( ) const
inline
const CLightEnv& CRenderer::GetLightEnv ( )
inline
CMaterialManager & CRenderer::GetMaterialManager ( )
ERenderMode CRenderer::GetModelRenderMode ( ) const
inline
bool CRenderer::GetOptionBool ( enum Option  opt) const
CParticleManager & CRenderer::GetParticleManager ( )
CPostprocManager & CRenderer::GetPostprocManager ( )
RenderPath CRenderer::GetRenderPath ( ) const
inline
CRenderer::RenderPath CRenderer::GetRenderPathByName ( const CStr &  name)
static
CStr CRenderer::GetRenderPathName ( RenderPath  rp)
static
Scene & CRenderer::GetScene ( )

Return the scene that is currently being rendered.

Only valid when the renderer is in a RenderScene call.

CShaderManager & CRenderer::GetShaderManager ( )
SkyManager* CRenderer::GetSkyManager ( )
inline

GetSkyManager: Return the renderer's sky manager.

Returns
the SkyManager object used by the renderer
Stats& CRenderer::GetStats ( )
inline
CShaderDefines CRenderer::GetSystemShaderDefines ( )
inline
TerrainRenderer & CRenderer::GetTerrainRenderer ( )
ERenderMode CRenderer::GetTerrainRenderMode ( ) const
inline
CTextureManager & CRenderer::GetTextureManager ( )
CTimeManager & CRenderer::GetTimeManager ( )
const CCamera& CRenderer::GetViewCamera ( ) const
inline
SViewPort CRenderer::GetViewport ( )
WaterManager* CRenderer::GetWaterManager ( )
inline

GetWaterManager: Return the renderer's water manager.

Returns
the WaterManager object used by the renderer
int CRenderer::GetWidth ( ) const
inline
int CRenderer::LoadAlphaMaps ( )
void CRenderer::MakeShadersDirty ( )
bool CRenderer::Open ( int  width,
int  height 
)
void CRenderer::RecomputeSystemShaderDefines ( )
protected
static void CRenderer::RegisterScriptFunctions ( ScriptInterface scriptInterface)
static
Status CRenderer::ReloadChangedFileCB ( void *  param,
const VfsPath path 
)
staticprotected
void CRenderer::ReloadShaders ( )
protected
void CRenderer::RenderModels ( const CShaderDefines context,
int  cullGroup 
)
protected
void CRenderer::RenderParticles ( int  cullGroup)
protected
void CRenderer::RenderPatches ( const CShaderDefines context,
int  cullGroup 
)
protected
void CRenderer::RenderReflections ( const CShaderDefines context,
const CBoundingBoxAligned scissor 
)
protected
void CRenderer::RenderRefractions ( const CShaderDefines context,
const CBoundingBoxAligned scissor 
)
protected
void CRenderer::RenderScene ( Scene scene)

Render the given scene immediately.

Parameters
scenea Scene object describing what should be rendered.
void CRenderer::RenderShadowMap ( const CShaderDefines context)
protected
void CRenderer::RenderSilhouettes ( const CShaderDefines context)
protected
void CRenderer::RenderSubmissions ( const CBoundingBoxAligned waterScissor)
protected
void CRenderer::RenderTextOverlays ( )

Render text overlays on top of the scene.

Assumes the caller has set up the GL environment for orthographic rendering with texturing and blending.

void CRenderer::RenderTransparentModels ( const CShaderDefines context,
int  cullGroup,
ETransparentMode  transparentMode,
bool  disableFaceCulling 
)
protected
void CRenderer::ResetState ( )

Resets the render state to default, that was before a game started.

void CRenderer::Resize ( int  width,
int  height 
)
void CRenderer::SetClearColor ( SColor4ub  color)
void CRenderer::SetDisplayTerrainPriorities ( bool  enabled)
inline
void CRenderer::SetLightEnv ( CLightEnv lightenv)
inline
void CRenderer::SetModelRenderMode ( ERenderMode  mode)
inline
void CRenderer::SetObliqueFrustumClipping ( CCamera camera,
const CVector4D clipPlane 
) const
protected
void CRenderer::SetOptionBool ( enum Option  opt,
bool  value 
)
void CRenderer::SetRenderPath ( RenderPath  rp)
void CRenderer::SetSceneCamera ( const CCamera viewCamera,
const CCamera cullCamera 
)

Set up the camera used for rendering the next scene; this includes setting OpenGL state like viewport, projection and modelview matrices.

Parameters
viewCamerathis camera determines the eye position for rendering
cullCamerathis camera determines the frustum for culling in the renderer and for shadow calculations
void CRenderer::SetSimulation ( CSimulation2 simulation)

Set simulation context for rendering purposes.

Must be called at least once when the game has started and before frames are rendered.

void CRenderer::SetTerrainRenderMode ( ERenderMode  mode)
inline
void CRenderer::SetViewCamera ( const CCamera camera)
inline
void CRenderer::SetViewport ( const SViewPort vp)
void CRenderer::Submit ( CPatch patch)
protectedvirtual

Submit a terrain patch that is part of the scene.

Implements SceneCollector.

void CRenderer::Submit ( SOverlayLine overlay)
protectedvirtual

Submit a line-based overlay.

Implements SceneCollector.

void CRenderer::Submit ( SOverlayTexturedLine overlay)
protectedvirtual

Submit a textured line overlay.

Implements SceneCollector.

void CRenderer::Submit ( SOverlaySprite overlay)
protectedvirtual

Submit a sprite overlay.

Implements SceneCollector.

void CRenderer::Submit ( SOverlayQuad overlay)
protectedvirtual

Submit a textured quad overlay.

Implements SceneCollector.

void CRenderer::Submit ( CModelDecal decal)
protectedvirtual

Submit a terrain decal.

Implements SceneCollector.

void CRenderer::Submit ( CParticleEmitter emitter)
protectedvirtual

Submit a particle emitter.

Implements SceneCollector.

void CRenderer::Submit ( SOverlaySphere overlay)
protectedvirtual

Submit a sphere overlay.

Implements SceneCollector.

void CRenderer::SubmitNonRecursive ( CModel model)
protectedvirtual

Submit a model that is part of the scene, without submitting attached models.

Implements SceneCollector.

void CRenderer::UnloadAlphaMaps ( )

Friends And Related Function Documentation

friend class CDecalRData
friend
friend class CPatchRData
friend
friend struct CRendererInternals
friend
friend class CVertexBuffer
friend
friend class FixedFunctionModelRenderer
friend
friend class HWLightingModelRenderer
friend
friend class InstancingModelRenderer
friend
friend class ModelRenderer
friend
friend class PolygonSortModelRenderer
friend
friend class RenderPathVertexShader
friend
friend class ShaderInstancingModelRenderer
friend
friend class ShaderModelVertexRenderer
friend
friend class SortModelRenderer
friend
friend class TerrainRenderer
friend
friend class WaterRenderer
friend

Member Data Documentation

CRendererInternals* CRenderer::m
protected

Private data that is not needed by inline functions.

struct { ... } CRenderer::m_AlphaMapCoords[NumAlphaMaps]
Caps CRenderer::m_Caps
protected
float CRenderer::m_ClearColor[4]
protected
CCamera CRenderer::m_CullCamera
protected

m_CullCamera: determines the frustum for culling and shadowmap calculations

See also
CGameView::m_ViewCamera
int CRenderer::m_CurrentCullGroup
protected
Scene* CRenderer::m_CurrentScene
protected
bool CRenderer::m_DisplayTerrainPriorities
protected

Enable rendering of terrain tile priority text overlay, for debugging.

Handle CRenderer::m_hCompositeAlphaMap
protected
int CRenderer::m_Height
protected
CLightEnv* CRenderer::m_LightEnv
protected
ERenderMode CRenderer::m_ModelRenderMode
protected
struct CRenderer::Options CRenderer::m_Options
int CRenderer::m_ShadowMapSize

m_ShadowMapSize: Size of shadow map, or 0 for default.

Typically slow but useful for high-quality rendering. Changes don't take effect until the shadow map is regenerated.

Can be accessed via JS as renderer.shadowMapSize

float CRenderer::m_ShadowZBias

m_ShadowZBias: Z bias used when rendering shadows into a depth texture.

This can be used to control shadowing artifacts.

Can be accessed via JS as renderer.shadowZBias ShadowMap uses this for matrix calculation.

bool CRenderer::m_SkipSubmit

m_SkipSubmit: Disable the actual submission of rendering commands to OpenGL.

All state setup is still performed as usual.

Can be accessed via JS as renderer.skipSubmit

SkyManager* CRenderer::m_SkyManager
protected

m_SkyManager: the SkyManager object used for sky textures and settings

Stats CRenderer::m_Stats
protected
CShaderDefines CRenderer::m_SystemShaderDefines
protected
ERenderMode CRenderer::m_TerrainRenderMode
protected
CCamera CRenderer::m_ViewCamera
protected

m_ViewCamera: determines the eye position for rendering

See also
CGameView::m_ViewCamera
SViewPort CRenderer::m_Viewport
protected
WaterManager* CRenderer::m_WaterManager
protected

m_WaterManager: the WaterManager object used for water textures and settings (e.g.

water color, water height)

int CRenderer::m_Width
protected
float CRenderer::u0
float CRenderer::u1
float CRenderer::v0
float CRenderer::v1

The documentation for this class was generated from the following files: