My Project
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ParaEngine::CMultiFrameBlockWorldRenderer Class Reference

this is used for rendering a super large block world across several frames. More...

#include <MultiFrameBlockWorldRenderer.h>

Inheritance diagram for ParaEngine::CMultiFrameBlockWorldRenderer:
ParaEngine::IAttributeFields ParaEngine::IObject ParaEngine::CRefCounted

Public Member Functions

 CMultiFrameBlockWorldRenderer (BlockWorldClient *pWorld)
 
 ATTRIBUTE_DEFINE_CLASS (CMultiFrameBlockWorldRenderer)
 
virtual int InstallFields (CAttributeClass *pClass, bool bOverride)
 this class should be implemented if one wants to add new attribute. More...
 
 ATTRIBUTE_METHOD1 (CMultiFrameBlockWorldRenderer, IsEnabled_s, bool *)
 
 ATTRIBUTE_METHOD1 (CMultiFrameBlockWorldRenderer, SetEnabled_s, bool)
 
 ATTRIBUTE_METHOD1 (CMultiFrameBlockWorldRenderer, IsDirty_s, bool *)
 
 ATTRIBUTE_METHOD1 (CMultiFrameBlockWorldRenderer, SetDirty_s, bool)
 
 ATTRIBUTE_METHOD1 (CMultiFrameBlockWorldRenderer, IsUseMyCamera_s, bool *)
 
 ATTRIBUTE_METHOD1 (CMultiFrameBlockWorldRenderer, SetUseMyCamera_s, bool)
 
 ATTRIBUTE_METHOD1 (CMultiFrameBlockWorldRenderer, IsDebugImage_s, bool *)
 
 ATTRIBUTE_METHOD1 (CMultiFrameBlockWorldRenderer, SetDebugImage_s, bool)
 
 ATTRIBUTE_METHOD1 (CMultiFrameBlockWorldRenderer, IsFinished_s, bool *)
 
 ATTRIBUTE_METHOD1 (CMultiFrameBlockWorldRenderer, GetMaxChunksToDrawPerTick_s, int *)
 
 ATTRIBUTE_METHOD1 (CMultiFrameBlockWorldRenderer, SetMaxChunksToDrawPerTick_s, int)
 
 ATTRIBUTE_METHOD1 (CMultiFrameBlockWorldRenderer, GetRenderDistance_s, int *)
 
 ATTRIBUTE_METHOD1 (CMultiFrameBlockWorldRenderer, SetRenderDistance_s, int)
 
bool Draw (int nMaxChunks=-1)
 draw some chunks if not finished. More...
 
bool DrawToSkybox ()
 render the image to the screen, with z test enabled and z-write disabled. More...
 
bool IsDebugImage () const
 show the image on left top corner for debugging
 
void SetDebugImage (bool val)
 
bool IsEnabled () const
 whether multi frame rendering is enabled. More...
 
void SetEnabled (bool val)
 
bool IsUseMyCamera () const
 default to false. More...
 
void SetUseMyCamera (bool val)
 
int GetMaxChunksToDrawPerTick () const
 max number of chunks to draw per tick
 
void SetMaxChunksToDrawPerTick (int val)
 
void CheckCreateActiveChunks ()
 
bool IsDrawToSkybox () const
 whether render the image to sky box. More...
 
void SetDrawToSkybox (bool val)
 
bool IsDirty () const
 this is true if camera has moved. More...
 
void SetDirty (bool val)
 
bool IsFinished () const
 
void SetFinished (bool val)
 
int GetRenderDistance () const
 max number of blocks to render from eye to farthest one
 
void SetRenderDistance (int val)
 
void DeleteDeviceObjects ()
 
void RendererRecreated ()
 
CBaseCameraGetCamera ()
 get the camera object. More...
 
- Public Member Functions inherited from ParaEngine::IAttributeFields
virtual int GetAttributeClassID ()
 attribute class ID should be identical, unless one knows how overriding rules work. More...
 
virtual const char * GetAttributeClassName ()
 a static string, describing the attribute class object's name
 
virtual const char * GetAttributeClassDescription ()
 a static string, describing the attribute class object
 
virtual int GetChildAttributeColumnCount ()
 we support multi-dimensional child object. More...
 
virtual int GetChildAttributeObjectCount (int nColumnIndex=0)
 get the number of child objects (row count) in the given column. More...
 
virtual IAttributeFieldsGetChildAttributeObject (int nRowIndex, int nColumnIndex=0)
 
virtual IAttributeFieldsGetChildAttributeObject (const std::string &sName)
 get attribute by child object. More...
 
 ATTRIBUTE_METHOD1 (IAttributeFields, GetName_s, const char **)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, SetName_s, const char *)
 
 ATTRIBUTE_METHOD (IAttributeFields, PrintObject_s)
 
 ATTRIBUTE_METHOD (IAttributeFields, AddRef_s)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, GetRefCount_s, int *)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, SetTime_s, int)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, GetTime_s, int *)
 
 ATTRIBUTE_METHOD (IAttributeFields, Release_s)
 
virtual const std::string & GetIdentifier ()
 
virtual void SetIdentifier (const std::string &sID)
 
virtual bool IsModified ()
 whether some of the fields are modified.It is up to the implementation class to provide this functionality if necessary. More...
 
virtual void SetModified (bool bModified)
 set whether any field has been modified. More...
 
virtual bool ValidateFields ()
 validate all fields and return true if validation passed. More...
 
virtual string GetValidationMessage ()
 get the recent validation message due to the most recent call to ValidateFields()
 
virtual bool ResetField (int nFieldID)
 Reset the field to its initial or default value. More...
 
virtual bool InvokeEditor (int nFieldID, const std::string &sParameters)
 Invoke an (external) editor for a given field. More...
 
virtual bool AddChildAttributeObject (IAttributeFields *pChild, int nRowIndex=-1, int nColumnIndex=0)
 add child object. More...
 
virtual void * QueryObjectByName (const std::string &sObjectType)
 convert to object of a given type. More...
 
virtual void * QueryObject (int nObjectType)
 convert to object of a given type. More...
 
virtual int GetTime ()
 get the current local time in case it is animated in milli seconds frames. More...
 
virtual void SetTime (int nTime)
 
virtual CDynamicAttributeFieldGetDynamicField (const std::string &sName)
 Get a dynamic field with a given name. More...
 
virtual CDynamicAttributeFieldGetDynamicField (int nIndex)
 Get a dynamic field with a given index. More...
 
virtual const char * GetDynamicFieldNameByIndex (int nIndex)
 get field name by index
 
virtual int GetDynamicFieldCount ()
 how many dynamic field this object currently have. More...
 
virtual int SetDynamicField (const std::string &sName, const CVariable &value)
 set a dynamic field with a given name. More...
 
virtual int AddDynamicField (const std::string &sName, ATTRIBUTE_FIELDTYPE dwType)
 add dynamic field and return field index
 
virtual void RemoveAllDynamicFields ()
 remove all dynamic fields
 
virtual int SaveDynamicFieldsToString (std::string &output)
 save only text dynamic fields to fieldname = value text strings. More...
 
virtual int LoadDynamicFieldsFromString (const std::string &input)
 load only text dynamic fields from string More...
 
CAttributeClassGetAttributeClass ()
 get the main attribute class object. More...
 
void PrintObject ()
 print the content of this object to a text file at temp/doc/[ClassName].txt. More...
 
- Public Member Functions inherited from ParaEngine::IObject
virtual void Clone (IObject *obj) const
 Clone the object's contains to a pointer. More...
 
virtual IObjectClone () const
 Clone the object's contains and return a pointer to the newly created object. More...
 
virtual bool Equals (const IObject *obj) const
 Compare the object with another object. More...
 
virtual const ITypeGetType () const
 
virtual std::string ToString () const
 
WeakPtr_typeGetWeakReference ()
 get weak reference object. More...
 
virtual int ProcessObjectEvent (const ObjectEvent &event)
 this function is only used to backward compatibility of ParaObject:AddEvent() function. More...
 
- Public Member Functions inherited from ParaEngine::CRefCounted
void addref () const
 add reference count of the object. More...
 
bool delref () const
 decrease reference count of the object. More...
 
int GetRefCount () const
 get the reference count
 
virtual int Release ()
 
CRefCountedAddToAutoReleasePool ()
 addref and releases the ownership sometime soon automatically (usually at the end of the current frame). More...
 

Protected Member Functions

virtual CRenderTargetCreateGetRenderTarget (bool bCreateIfNotExist=true)
 a render target will be created
 
bool DrawInternal (int nMaxChunks)
 
void DrawRenderTasks (BlockRenderPass nCurRenderPass)
 
RenderableChunkGetRenderableChunkByPosition (const Int16x3 &chunkPos, int nBufferIndex, bool *pbFromMainBuffer)
 
bool GetChunkByProgress (int nProgress, Int16x3 &outChunkPos, bool bIsResuming=false)
 get chunk column position according to render progress. More...
 
void ResetProgress ()
 
void UpdateViewParams ()
 calculate camera related parameters for used in later multi-frame rendering. More...
 
void SetEyeBlockId (const Uint16x3 &eyePos)
 
const Uint16x3GetEyeBlockId ()
 
const Uint16x3GetEyeChunkId ()
 
- Protected Member Functions inherited from ParaEngine::IAttributeFields
virtual CAttributeClassCreateAttributeClass ()
 initialize fields
 
virtual CDynamicAttributesSetGetDynamicAttributes (bool bCreateIfNotExist=false)
 

Protected Attributes

BlockWorldClientm_pWorld
 
WeakPtr m_renderTarget
 the render target that stores the final image. More...
 
int m_nRenderDistance
 max number of blocks to render from eye to farthest one
 
int m_nMaxChunksToDrawPerTick
 max number of chunks to draw per tick
 
bool m_bIsDirty
 this is true if camera has moved. More...
 
bool m_bIsFinished
 if the image is ready for use. More...
 
bool m_bEnabled
 whether multi frame rendering is enabled. More...
 
bool m_bDrawToSkybox
 whether render the image to sky box. More...
 
int m_nProgress
 get the current progress
 
int m_nCurRenderPass
 get the current render pass
 
std::vector< RenderableChunk * > m_activeChunks
 renderable chunks that is rebuilt each frame with some new data. More...
 
std::vector< BlockRenderTask * > m_tempRenderTasks
 only used temporarily when rendering blocks
 
std::vector< Int16x3m_alphaTestTasks
 pending render task. More...
 
std::vector< Int16x3m_alphaBlendTasks
 
std::vector< Int16x3m_reflectedWaterTasks
 
CBaseCameram_pCamera
 
Uint16x3 m_curCamChunkId
 
Uint16x3 m_curCamBlockId
 
CShapeSphere m_sEyeSphere
 
int32 m_chunkViewSize
 
CCameraFrustum m_frustum
 
Uint16x3 m_startIdx
 
Uint16x3 m_endIdx
 
Vector3 m_renderOrig
 
bool m_bUseMyCamera
 default to false. More...
 
bool m_bDebugImage
 show the image on left top corner for debugging
 
- Protected Attributes inherited from ParaEngine::IObject
WeakPtr_type m_weak_reference
 
- Protected Attributes inherited from ParaEngine::CRefCounted
int m_refcount
 

Additional Inherited Members

- Public Types inherited from ParaEngine::IAttributeFields
typedef ParaEngine::weak_ptr< IObject, IAttributeFieldsWeakPtr_type
 
- Public Types inherited from ParaEngine::IObject
typedef ParaEngine::weak_ptr< IObjectWeakPtr_type
 
- Static Public Member Functions inherited from ParaEngine::IAttributeFields
static HRESULT GetAttributeClassID_s (IAttributeFields *cls, int *p1)
 
static HRESULT GetAttributeClassName_s (IAttributeFields *cls, const char **p1)
 
static bool OpenWithDefaultEditor (const char *sFilename, bool bWaitOnReturn=false)
 Open a given file with the default registered editor in the game engine. More...
 

Detailed Description

this is used for rendering a super large block world across several frames.

because chunk buffer of the world usually can not be held all in video memory. In general, this renderer is only used to generate large preview image of the world offline. However, it is also possible to use this as environment map or right after the sky box. A new image will be generated when the camera changed.

Member Function Documentation

§ Draw()

bool ParaEngine::CMultiFrameBlockWorldRenderer::Draw ( int  nMaxChunks = -1)

draw some chunks if not finished.

Parameters
nMaxChunkshow many chunks to draw. if -1 (default), we will use m_nMaxChunksToDrawPerTick
Returns
true if finished.

§ DrawToSkybox()

bool ParaEngine::CMultiFrameBlockWorldRenderer::DrawToSkybox ( )

render the image to the screen, with z test enabled and z-write disabled.

As if drawing on the skybox.

§ GetCamera()

CBaseCamera * ParaEngine::CMultiFrameBlockWorldRenderer::GetCamera ( )

get the camera object.

create if the camera does not exist.

§ GetChunkByProgress()

bool ParaEngine::CMultiFrameBlockWorldRenderer::GetChunkByProgress ( int  nProgress,
Int16x3 outChunkPos,
bool  bIsResuming = false 
)
protected

get chunk column position according to render progress.

Parameters
nProgressthe render progress.
outChunkPosoutput chunk position.
Returns
true if chunk position is found. if false, it means we have finished all chunks.

§ GetRenderableChunkByPosition()

RenderableChunk * ParaEngine::CMultiFrameBlockWorldRenderer::GetRenderableChunkByPosition ( const Int16x3 chunkPos,
int  nBufferIndex,
bool *  pbFromMainBuffer 
)
protected
Parameters
pbFromMainBufferoutput a boolean. if return it means that the returned chunk is from the main renderer buffer. if false, it means that it is from this class's own buffer.

§ InstallFields()

int ParaEngine::CMultiFrameBlockWorldRenderer::InstallFields ( CAttributeClass pClass,
bool  bOverride 
)
virtual

this class should be implemented if one wants to add new attribute.

This function is always called internally.

Reimplemented from ParaEngine::IAttributeFields.

§ IsDirty()

bool ParaEngine::CMultiFrameBlockWorldRenderer::IsDirty ( ) const

this is true if camera has moved.

and we need to start a repaint. Please note even it is not dirty, it does not mean the image is finished.

§ IsDrawToSkybox()

bool ParaEngine::CMultiFrameBlockWorldRenderer::IsDrawToSkybox ( ) const

whether render the image to sky box.

true by default.

§ IsEnabled()

bool ParaEngine::CMultiFrameBlockWorldRenderer::IsEnabled ( ) const

whether multi frame rendering is enabled.

§ IsUseMyCamera()

bool ParaEngine::CMultiFrameBlockWorldRenderer::IsUseMyCamera ( ) const

default to false.

if true, we will use a separate camera other than the global scene's camera. if false, we will use copy scene camera to my camera whenever it moves.

§ UpdateViewParams()

void ParaEngine::CMultiFrameBlockWorldRenderer::UpdateViewParams ( )
protected

calculate camera related parameters for used in later multi-frame rendering.

Member Data Documentation

§ m_activeChunks

std::vector<RenderableChunk*> ParaEngine::CMultiFrameBlockWorldRenderer::m_activeChunks
protected

renderable chunks that is rebuilt each frame with some new data.

§ m_alphaTestTasks

std::vector<Int16x3> ParaEngine::CMultiFrameBlockWorldRenderer::m_alphaTestTasks
protected

pending render task.

Because RenderableChunk is not valid across frames, we can only cache their chunk locations Array of chunk position

§ m_bDrawToSkybox

bool ParaEngine::CMultiFrameBlockWorldRenderer::m_bDrawToSkybox
protected

whether render the image to sky box.

true by default.

§ m_bEnabled

bool ParaEngine::CMultiFrameBlockWorldRenderer::m_bEnabled
protected

whether multi frame rendering is enabled.

§ m_bIsDirty

bool ParaEngine::CMultiFrameBlockWorldRenderer::m_bIsDirty
protected

this is true if camera has moved.

and we need to start a repaint. Please note even it is not dirty, it does not mean the image is finished.

§ m_bIsFinished

bool ParaEngine::CMultiFrameBlockWorldRenderer::m_bIsFinished
protected

if the image is ready for use.

Please note that one can still use the image even if it is not ready for example to show in-progress result to the user.

§ m_bUseMyCamera

bool ParaEngine::CMultiFrameBlockWorldRenderer::m_bUseMyCamera
protected

default to false.

if true, we will use a separate camera other than the global scene's camera. if false, we will use copy scene camera to my camera whenever it moves.

§ m_renderTarget

WeakPtr ParaEngine::CMultiFrameBlockWorldRenderer::m_renderTarget
protected

the render target that stores the final image.


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