"L. Spiro Engine"
Classes | Typedefs | Enumerations | Functions | Variables

lsg Namespace Reference

Classes

class  CDirectX11DepthStencilRenderTarget
 A DirectX 11 depth/stencil render target. More...
class  CDirectX11FloatTexture
 A floating-point texture made to work with DirectX 11. More...
class  CDirectX11RenderTarget
 A render target designed to interface with Direct3D 11. More...
class  CDirectX11RenderTargetManager
 The DirectX 11 implementation of the render target manager. More...
class  CDirectX11StandardTexture
 A standard DirectX 11 texture. More...
class  CDirectX11VertexBuffer
 Implements the interface specified by CVertexBufferBase for DirectX 11. More...
class  CDirectX9
 Interface with the DirectX 9 API. More...
class  CDirectX11RenderQueue
 A render queue that sorts the best way for Direct3D 11. More...
class  CDirectX11CBuffer
 A software-side cbuffer for Direct3D 11. More...
class  CDirectX11CompiledShader
 A base class for CDirectX11PixelShader and CDirectX11VertexShader which handles the common functionality between them. More...
class  CDirectX11CompiledShaderManager
 Manages the sharing of a single Direct3D 11 shader (vertex or pixel shader). More...
class  CDirectX11PixelShader
 A pixel shader in DirectX 11. More...
class  CDirectX11Shader
 A DirectX 11 shader. More...
class  CDirectX11ShaderManager
 Manages the interface between shader objects and the Direct3D 11 API. More...
class  CDirectX11ShaderTranslator
 Translates from the engine shader language to HLSL. More...
class  CDirectX11VertexShader
 A vertex shader in DirectX 11. More...
class  CFnd
 Most core graphics functions are found here. More...
class  CFndBase
 Common values that are used by the CFnd class but are not specific to any given graphics API and may be used/needed by the graphics API classes. More...
struct  LSG_UNIQUE_VB_ELEMENT
class  CIndexBufferBase
 An index buffer. More...
class  CGraphicsLib
 Core of the graphics library. More...
class  CPostProcessBrightPass
 A bright-pass post processor. More...
class  CPostProcessHorBlur
 A horizontal blur filter with the option to downsample at the same time. More...
class  CPostProcessingStage
 A single stage in a post-processing pass. More...
class  CPostProcessLuminance
 Manages calculating the luminance of a render and adjusting the luminance over time. More...
class  CPostProcessorBase
 The base class for the post processor. More...
class  CPostProcessVertBlur
 A vertical blur filter with the option to downsample at the same time. More...
class  CPreProc
 Parses a single expression related to #if and #elif. More...
class  CPreProcContainer
 Stores all of the data parsed during the parsing of an expression for use with the preprocessor. More...
union  YYSTYPE
class  CRenderQueueBase
 The base class for render queues. More...
class  CRenderQueueClient
 Objects that send render queue items to render queues must inherit from this class. More...
struct  LSG_RENDER_QUEUE_ITEM
 Information needed by the render queue for sorting. More...
class  CColorRenderTarget
 A color render target. More...
class  CDepthStencilRenderTarget
 A depth/stencil render target. More...
class  CRenderTargetBase
 A render target, different from a texture that is a render target in that this implementation is more like a back-buffer, not to be used as a texture on a model or sprite. More...
class  CRenderTargetInterface
 The base interface for all render targets. More...
class  CRenderTargetManagerBase
 Base for the class that manages render targets. More...
class  CCompiledShaderBase
 A base class for compiled shaders, providing a generic interface for setting and getting data from shaders. More...
class  CShader
 A shader for the graphics engine. More...
class  CShaderBase
 The base class for shaders. More...
class  CShaderLanguageParser
 Manages all information related to a parsed shader file. More...
class  CShaderLexer
 Defines the lexer base class by #define'ing yyFlexLexer before including LSGShaderLexBase.h. More...
class  CShaderParserWrapper
 Wrapper for the Bison generated syntax parser of the engine script language. More...
class  CShaderScope
 A single scope within a stack of scopes. More...
class  CShaderScopeStack
 A stack of scopes containing variables, functions, and structures declared in shaders. More...
union  LSG_PREPROC_SYNTAX_NODES
class  CShaderTranslationProcessorBase
 Provides a set of base callbacks that other platform-specific classes can use to process the syntax tree differently. More...
struct  LSG_ANIM_CELL
class  CSprite
 A standard 2D sprite class. More...
class  CStandardTexture
 A standard texture. More...
struct  LSG_TEX_PARMS
class  CTextureBase
 The base class for textures. More...
class  CTextureManager
 A texture manager. More...
class  CStripAdjacency
 Creates adjacency information for the preparation of the conversion from a triangle list to a triangle strip. More...
class  CTriangleStripper
 Creates a single one-sided triangle strip. More...
class  CVertexBuffer
 A vertex buffer. More...
struct  LSG_VB_CONTENTS
class  CVertexBufferBase
 The base of vertex buffers. More...

Typedefs

typedef CTextureBase Parent
typedef class
CDirectX9ShaderManager 
CShaderManager
typedef CDirectX11 CBaseApi
typedef struct
lsg::LSG_UNIQUE_VB_ELEMENT
LPLSG_UNIQUE_VB_ELEMENT
typedef struct
lsg::LSG_UNIQUE_VB_ELEMENT 
LPCLSG_UNIQUE_VB_ELEMENT
typedef struct
lsg::LSG_RENDER_QUEUE_ITEM
LPLSG_RENDER_QUEUE_ITEM
 Information needed by the render queue for sorting.
typedef struct
lsg::LSG_RENDER_QUEUE_ITEM 
LPCLSG_RENDER_QUEUE_ITEM
typedef CSharedPtr< CShaderCSharedShaderPtr
typedef struct lsg::LSG_ANIM_CELLLPLSG_ANIM_CELL
typedef struct lsg::LSG_ANIM_CELL LPCLSG_ANIM_CELL
typedef CSharedPtr< CAnimSprite > CSharedAnimSpritePtr
typedef CSharedPtr< CSpriteCSharedSpritePtr
typedef CSharedPtr< CCubeTexture > CSharedCubeTexPtr
typedef CSharedPtr
< CStandardTexture
CSharedStdTexPtr
typedef struct lsg::LSG_TEX_PARMSLPLSG_TEX_PARMS
typedef struct lsg::LSG_TEX_PARMS LPCLSG_TEX_PARMS
typedef struct
lsg::LSG_VB_CONTENTS
LPLSG_VB_CONTENTS
typedef struct lsg::LSG_VB_CONTENTS LPCLSG_VB_CONTENTS

Enumerations

enum  LSG_BUFFERS { LSG_B_COLOR_BUFFER = D3DCLEAR_TARGET, LSG_B_STENCIL_BUFFER = D3DCLEAR_STENCIL, LSG_B_DEPTH_BUFFER = D3DCLEAR_ZBUFFER, LSG_B_ALL = LSG_B_COLOR_BUFFER | LSG_B_STENCIL_BUFFER | LSG_B_DEPTH_BUFFER }
enum  LSG_LIGHT_TYPES { LSG_LT_NONE, LSG_LT_DIR, LSG_LT_POINT, LSG_LT_SPOT }
enum  LSG_BLEND_MODES {
  LSG_BM_ZERO, LSG_BM_ONE, LSG_BM_SRC_COLOR, LSG_BM_INV_SRC_COLOR,
  LSG_BM_DST_COLOR, LSG_BM_INV_DST_COLOR, LSG_BM_SRC_ALPHA, LSG_BM_INV_SRC_ALPHA,
  LSG_BM_DST_ALPHA, LSG_BM_INV_DEST_ALPHA, LSG_BM_SRC_ALPHA_SAT, LSG_BM_TOTAL,
  LSG_BM_FORCE_DWORD = 0x7FFFFFFF
}
enum  LSG_FILL_MODES { LSG_FM_SOLID, LSG_FM_WIRE }
enum  LSG_DEPTH_TEST {
  LSG_DT_NEVER, LSG_DT_ALWAYS, LSG_DT_LESS, LSG_DT_EQUAL,
  LSG_DT_NOTEQUAL, LSG_DT_LESSEQUAL, LSG_DT_GREATER, LSG_DT_GREATEREQUAL
}
enum  LSG_METRICS { LSG_MAX_LIGHTS = 8, LSG_MAX_TEXTURE_UNITS = 16 }
enum  LSG_FOG_TYPE { LSG_FT_LINEAR, LSG_FT_EXP, LSG_FT_EXP2 }
enum  LSG_CULL_MODES { LSG_CM_CW, LSG_CM_CCW }
enum  LSG_INDEX_BUFFER_USAGE_TYPES {
  LSG_IBUT_SETONLY = (1 << 0), LSG_IBUT_STANDARD = (1 << 1), LSG_IBUT_DYNAMIC = (1 << 2), LSG_IBUT_MASK = (LSG_IBUT_SETONLY | LSG_IBUT_STANDARD | LSG_IBUT_DYNAMIC),
  LSG_IBUT_FORCE_DWORD = 0x7FFFFFFF
}
enum  LSG_PREPROC_NODE {
  LSG_PPN_IDENTIFIER, LSG_PPN_NUMERICCONSTANT, LSG_PPN_UNARY, LSG_PPN_MATH,
  LSG_PPN_TERTIARY, LSG_PPN_DEFINED, LSG_PPN_TU
}
enum  LSG_PREPROC_NUM_CONSTANTS { LSG_PPNC_SIGNED, LSG_PPNC_UNSIGNED, LSG_PPNC_FLOATING, LSG_PPNC_INVALID }
enum  LSG_RENDER_TYPE { LSG_RT_NORMAL, LSG_RT_AMBIENTONLY, LSG_RT_LIGHTING, LSG_RT_SHADOWMAP }
enum  LSG_RENDER_TARGET_FORMAT {
  LSG_RTF_RGB16, LSG_RTF_RGBA16, LSG_RTF_RGB32, LSG_RTF_RGBA32,
  LSG_RTF_RGB10_A2, LSG_RTF_R_F16, LSG_RTF_R_F32, LSG_RTF_RG_F32,
  LSG_RTF_RG_F64, LSG_RTF_RGBA_F64, LSG_RTF_RGBA_F128, LSG_RTF_DEPTH16,
  LSG_RTF_DEPTH24, LSG_RTF_DEPTH32, LSG_RTF_DEPTH15_STENCIL1, LSG_RTF_DEPTH24_STENCIL4,
  LSG_RTF_DEPTH24_STENCIL8, LSG_RTF_TOTAL
}
enum  { LSG_MRT_MAX = 16 }
enum  LSG_NODE {
  LSG_N_STRINGCONSTANT, LSG_N_NUMERICCONSTANT, LSG_N_IDENTIFIER, LSG_N_BOOLEAN,
  LSG_N_ARRAYACCESS, LSG_N_POSTFIXINC, LSG_N_POSTFIXDEC, LSG_N_PREFIXINC,
  LSG_N_PREFIXDEC, LSG_N_UNARY, LSG_N_CAST, LSG_N_MATH,
  LSG_N_TERTIARY, LSG_N_ASSIGNMENT, LSG_N_COMMA, LSG_N_INTRINSIC,
  LSG_N_ARGLIST, LSG_N_FUNCTIONCALL, LSG_N_FIELDSELECT, LSG_N_CONSTRUCTOR,
  LSG_N_EXPRESSIONSTATEMENT, LSG_N_DECLARATIONSTATEMENT, LSG_N_SEMANTIC, LSG_N_TYPESPECIFIERNOPREC,
  LSG_N_FULLYSPECIFIEDTYPE, LSG_N_SINGLEDECL, LSG_N_INITLIST, LSG_N_INITLISTWRAP,
  LSG_N_STATEMENTLIST, LSG_N_NEWSCOPESTATEMENT, LSG_N_BLANKSTATEMENT, LSG_N_STRUCTDECLARATOR,
  LSG_N_STRUCTDECLARATORLIST, LSG_N_STRUCTDECLARATION, LSG_N_STRUCTDECLARATIONLIST, LSG_N_STRUCT,
  LSG_N_PARMDECLARATOR, LSG_N_PARMDECLARATION, LSG_N_PARMDECLARATIONLIST, LSG_N_FUNCDECL,
  LSG_N_FUNCDEFINITION, LSG_N_SELECTION, LSG_N_FORINIT, LSG_N_WHILE,
  LSG_N_DOWHILE, LSG_N_FOR, LSG_N_CONTINUE, LSG_N_BREAK,
  LSG_N_RETURN, LSG_N_DISCARD, LSG_N_EXTERNALDECLARATIONLIST
}
enum  LSG_NUM_CONSTANTS { LSG_NC_SIGNED, LSG_NC_UNSIGNED, LSG_NC_FLOATING, LSG_NC_INVALID }
enum  LSG_STORAGE_QUALIFIER {
  LSG_SQ_BASEBIT = 16UL, LSG_SQ_CONST = (1UL << (0UL + LSG_SQ_BASEBIT)), LSG_SQ_IN = (1UL << (1UL + LSG_SQ_BASEBIT)), LSG_SQ_OUT = (1UL << (2UL + LSG_SQ_BASEBIT)),
  LSG_SQ_INOUT = (LSG_SQ_IN | LSG_SQ_OUT), LSG_SQ_UNIFORM = (1UL << (3UL + LSG_SQ_BASEBIT)), LSG_SQ_BITSUSED = 4UL + LSG_SQ_BASEBIT, LSG_SQ_FORCEDWORD = 0x7FFFFFFF
}
enum  LSG_INTERPOLATION_QUALIFIER { LSG_IQ_SMOOTH = (1UL << (0UL + LSG_SQ_BITSUSED)), LSG_IQ_FLAT = (1UL << (1UL + LSG_SQ_BITSUSED)), LSG_IQ_BITSUSED = 2UL + LSG_SQ_BITSUSED, LSG_IQ_FORCEDWORD = 0x7FFFFFFF }
enum  LSG_WRAP_MODE { LSG_WM_CLAMP, LSG_WM_REPEAT, LSG_WM_MIRROR }
enum  LSG_MAPPING_TYPE {
  LSG_MT_UV, LSG_MT_XY, LSG_MT_YZ, LSG_MT_XZ,
  LSG_MT_SPERICAL, LSG_MT_ENVIRONMENT, LSG_MT_CYLINDRICAL, LSG_MT_PROJ
}
enum  LSG_TEXTURE_USAGE_FORMAT {
  LSG_UF_NORMAL, LSG_UF_CUBE_MAP, LSG_UF_SHADOW_MAP, LSG_UF_COLOR_MAP,
  LSG_UF_NORMAL_MAP
}
enum  LSG_TEXTURE_USAGE_TYPE { LSG_TU_SETONLY = (1 << 0UL), LSG_TU_MODIFYABLE = (1 << 1UL), LSG_TU_RENDERTARGET = (1 << 2UL), LSG_TU_BITS = 3 }
enum  LSG_TEXTURE_FILTER_TYPE { LSG_TFT_ANISOTROPIC = (1 << 3UL), LSG_TFT_LINEAR = (1 << 4UL), LSG_TFT_NEAREST = (1 << 5UL) }
enum  LSG_TEXTURE_BLENDING_MODES {
  LSG_TBM_TRANSLUCENT = 0UL, LSG_TBM_ADDITIVE = 1UL, LSG_TBM_MODULATE = 2UL, LSG_TBM_MODULATE2 = 3UL,
  LSG_TBM_OVER = 4UL
}
enum  LSG_TEXTURE_METRICS { LSG_TM_MAX_SLOTS = 8UL }
enum  LSG_VERTEX_BUFFER_USAGE_TYPES {
  LSG_VBUT_SETONLY = (1 << 0), LSG_VBUT_STANDARD = (1 << 1), LSG_VBUT_DYNAMIC = (1 << 2), LSG_VBUT_MASK = (LSG_VBUT_SETONLY | LSG_VBUT_STANDARD | LSG_VBUT_DYNAMIC),
  LSG_VBUT_FORCE_DWORD = 0x7FFFFFFF
}
enum  LSG_VERTEX_BUFFER_ACCESS_FLAGS { LSG_VBAF_READ_ONLY = (1 << 7), LSG_VBAF_READ_WRITE = (1 << 8), LSG_VBAF_MASK = (LSG_VBAF_READ_ONLY | LSG_VBAF_READ_WRITE), LSG_VBAF_FORCE_DWORD = 0x7FFFFFFF }
enum  LSG_VERTEX_BUFFER_PRIMITIVES { LSG_VBP_TRIANGLELIST = (1 << 9), LSG_VBP_TRIANGLESTRIP = (1 << 10), LSG_VBP_MASK = (LSG_VBP_TRIANGLELIST | LSG_VBP_TRIANGLESTRIP), LSG_VBP_FORCE_DWORD = 0x7FFFFFFF }
enum  LSG_VERTEX_ATTRIBUTES {
  LSG_VA_POSITION, LSG_VA_POSITIONW, LSG_VA_NORMAL, LSG_VA_COLOR,
  LSG_VA_ALPHA, LSG_VA_TEX, LSG_VA_FOGCOORD, LSG_VA_BINORMAL,
  LSG_VA_TANGENT, LSG_VA_BLENDWEIGHT, LSG_VA_BLENDINDICES, LSG_VA_1FLOAT_TEX,
  LSG_VA_3FLOAT_TEX, LSG_VA_4FLOAT_TEX, LSG_VA_FORCE_DWORD = 0x7FFFFFFF
}
enum  LSG_VERTEX_BUFFER_METRICS { LSG_VBM_MAX_ATTRIBUTES = 16, LSG_VBM_MAX_USAGES = 16, LSG_VBM_MAX_STREAMS = 16 }

Functions

LSVOID LSE_CALL Reset ()
LSVOID LSE_CALL ResetApi ()
LSBOOL LSE_CALL CreateApiTexture ()
LSVOID LSE_CALL InitApi (CAllocator *_paAllocator)
LSBOOL LSE_CALL CreateApiIndexBuffer ()
LSVOID LSE_CALL RenderApi (const CVertexBuffer &_vbBuffer, LSUINT32 _ui32TotalPrimitives) const
LSVOID LSE_CALL SetApiStripType (LSG_VERTEX_BUFFER_PRIMITIVES _vbpType)
CIndexBuffer &LSE_CALL operator= (const CIndexBuffer &_ibOther)
LSBOOL LSE_CALL CreateIndexBuffer (LSUINT32 _ui32InitialElements, LSUINT32 _ui32Usage, LSBOOL _bUse32Bits=false, CAllocator *_paAllocator=NULL)
LSBOOL LSE_CALL CreateIndexBufferFromVertexBuffer (CVertexBuffer &_vbBuffer, LSUINT32 _ui32Usage, CAllocator *_paAllocator=NULL)
LSBOOL LSE_CALL CreateTriangleStripGrid (LSUINT32 _ui32VerticesPerRow, LSUINT32 _ui32Rows, LSUINT32 _ui32Usage, CAllocator *_paAllocator=NULL)
LSVOID LSE_CALL SetAllocator (CAllocator *_paAllocator)
LSBOOL LSE_CALL MakeTriangleStrip ()
LSBOOL LSE_CALL Finalize ()
LSBOOL LSE_CALL Lock ()
LSBOOL LSE_CALL UnLock ()
LSBOOL LSE_CALL PushIndex (LSUINT32 _ui32Index)
LSE_INLINE LSBOOL LSE_CALL SetIndex (LSUINT32 _ui32IndexIndex, LSUINT32 _ui32Value)
LSE_INLINE LSUINT32 LSE_CALL TotalIndices () const
LSE_INLINE const LSVOID *LSE_CALL GetIndices () const
LSE_INLINE const LSUINT32 *LSE_CALL Get32BitIndices () const
LSE_INLINE const LSUINT16 *LSE_CALL Get16BitIndices () const
LSE_INLINE LSBOOL LSE_CALL IndicesAre32Bits () const
LSBOOL LSE_CALL UpgradeList ()
LSE_INLINE LSVOID LSE_CALL Render (const CVertexBuffer &_vbBuffer, LSUINT32 _ui32TotalPrimitives) const
virtual LSUINT32 LSE_CALL NewLex ()
LSE_INLINE CRenderQueue &LSE_CALL operator= (const CRenderQueue &_rqOther)
LSE_INLINE LSVOID LSE_CALL RenderNormal () const
LSE_INLINE LSVOID LSE_CALL RenderAmbient () const
LSE_INLINE LSVOID LSE_CALL RenderLighting () const
LSE_INLINE LSVOID LSE_CALL RenderShadowMap () const
LSE_INLINE LSVOID LSE_CALL Render (LSG_RENDER_TYPE _rtRenderType) const
LSE_INLINE LSVOID LSE_CALL PrepareUnsortedRender ()
LSE_INLINE CRenderQueueSet
&LSE_CALL 
operator= (const CRenderQueueSet &_rqsOther)
CRenderQueue &LSE_CALL OpaqueRenderQueue ()
CRenderQueue &LSE_CALL AlphaRenderQueue ()
LSVOID LSE_CALL EndRender ()
LSE_INLINE LSUINT32 LSE_CALL Failures () const
LSBOOL LSE_CALL SetCells (const LSG_ANIM_CELL *_pacCells, LSUINT32 _ui32Total)
LSVOID LSE_CALL Tick (LSUINT64 _ui64Time)
LSVOID LSE_CALL TickForward (LSUINT64 _ui64Time)
LSBOOL LSE_CALL CreateCubeTexture (LSUINT32 _ui32Size, LSUINT32 _ui32Usage, LSI_PIXEL_FORMAT _pfFormat=LSI_PF_R8G8B8, LSBOOL _bMipMaps=true, CAllocator *_paAllocator=NULL)
LSBOOL LSE_CALL LoadCubeTextureFromMemory (const LSVOID **_ppvBuffers, LSUINT32 _ui32Sizes[6], LSUINT32 _ui32Usage, LSBOOL _bMipMaps=true, CAllocator *_paAllocator=NULL)
LSBOOL LSE_CALL LoadCubeTextureFromFiles (const LSCHAR *_pcPaths[6], LSUINT32 _ui32Usage, LSBOOL _bMipMaps=true, CAllocator *_paAllocator=NULL)
LSVOID LSE_CALL SetInternal (LSUINT32 _ui32Size, LSUINT32 _ui32Usage, LSI_PIXEL_FORMAT _pfFormat, LSBOOL _bMipMaps)
LSBOOL LSE_CALL CreateFloatingPointTexture (LSUINT32 _ui32Width, LSUINT32 _ui32Height)

Variables

__pad0__
CImage m_iFaces [6]
ID3D11Texture2D * m_ptTexture
ID3D11RenderTargetView * m_prtvView
ID3D11ShaderResourceView * m_psrvResourceView
ID3D11Buffer * m_pbDirectX11IndexBuffer
D3D11_PRIMITIVE_TOPOLOGY m_ptPrimitiveType
F std::ostream * _posStream = NULL )
CRenderQueue m_rqOpaque
CRenderQueue m_rqAlpha
LSUINT32 m_ui32Failures
CVector< LSG_ANIM_CELLm_vCells
LSUINT64 m_ui64Time
LSUINT64 m_ui64TotalTime
LSUINT32 m_ui32Cell
LSI_PIXEL_FORMAT m_pfFormat

Detailed Description

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Cube textures made to interface with Direct3D 11.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A DirectX 11 depth/stencil render target.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A floating-point texture made to work with DirectX 11.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: This class handles the conversion from our standard general-purpose index buffer to something that can be used by Direct3D 11.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A render target designed to interface with Direct3D 11.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: The DirectX 11 implementation of the render target manager.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A standard DirectX 11 texture.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Implements the interface specified by CVertexBufferBase for DirectX 11. Note that only in debug builds is CVertexBufferBase actually inherited by this class.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Interface with the DirectX 9 API.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A render queue that sorts the best way for Direct3D 11.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A software-side cbuffer for Direct3D 11.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A base class for CDirectX11PixelShader and CDirectX11VertexShader which handles the common functionality between them. Both classes have compiled code and a few constant buffers, and a way to convert handles from that constant table handle type to our custom handle type.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Manages the sharing of a single Direct3D 11 shader (vertex or pixel shader). Sharing is based off the (adjusted) shader text for the sake of speed. The alternative--sharing based off compiled code-- makes loading times too long. For debug purposes, sharing can be disabled.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A pixel shader in DirectX 11. This is used by CDirectX9Shader as one of its components. These objects are shared by default, managed by the CDirectX11CompiledShaderManager class.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A DirectX 11 shader. Shaders in DirectX 11 are normally considered to be specifically a vertex shader or a pixel shader (etc.), but here a single vertex, pixel, and geometry shader are treated as one, matching shader behavior in OpenGL. Vertex, pixel, and geometry shaders are called shader parts here, with the shader being the result of combining them. Shader parts are optionally shared. The DirectX shader part manager prevents duplicate shader parts and handles sharing. Sharing can be disabled for debugging purposes.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Manages the interface between shader objects and the Direct3D 11 API. Its main function is to apply and unapply shaders, but it also applies engine-specific functionality to shaders as well, where they are not supported by HLSL. For example, automatic application of light and fog values, etc.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Translates from the engine shader language to HLSL.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A vertex shader in DirectX 11. This is used by CDirectX11Shader as one of its components. These objects are shared by default, managed by the CDirectX11CompiledShaderManager class.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Most core graphics functions are found here.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Common values that are used by the CFnd class but are not specific to any given graphics API and may be used/needed by the graphics API classes.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Graphics system constants.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: An API-independent index buffer.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: An index buffer. Automatically uses the lowest suitable type for the given index data--that is it will use 16-bit indices if possible or upgrade to 32-bit automatically. This base class provides basic enumerations and a protected interface used only in debug mode. For the reasons behind this system, read the details in LSGVertexBufferBase.h.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A bright-pass post processor.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A horizontal blur filter with the option to downsample at the same time.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A single stage in a post-processing pass. Here, "pass" means the entire post-processing from start to finish. "Pass" is always ambiguous in post-processing. Sometimes it means the entire post-- processing, sometimes one specific render, sometimes a specific stage, which might require multiple renders. Here, a render is a render, a stage is one or more renders whose goal is to produce a result for another stage to use, and "pass" is all of this combined.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Manages calculating the luminance of a render and adjusting the luminance over time.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: The post processor.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: The base class for the post processor.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A vertical blur filter with the option to downsample at the same time.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Parses a single expression related to #if and #elif.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Stores all of the data parsed during the parsing of an expression for use with the preprocessor.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A render queue.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: The base class for render queues.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Objects that send render queue items to render queues must inherit from this class. The render queue will use this interface to have objects draw themselves.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Information needed by the render queue for sorting.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A render queue set is a pair of render queues, one for opaque items and one for alpha.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A color render target. Used for off-screen rendering.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A depth/stencil render target.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A render target, different from a texture that is a render target in that this implementation is more specific to rendering to a surface. A texture that acts as a render target is typically primarily a texture first and a render target second. Rendering to the texture will typically not take place every frame and it will be attached to a model or sprite for display on something. In contrast, this render target implementation is meant specifically to be a target of rendering for post- processing and other effects. It will not be used as a texture for an object or sprite.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: The base interface for all render targets.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A render target manager.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Base for the class that manages render targets. Render targets should be activated (as the target of a render) through this manager. It will not set the render targets immediately, but will activate them when the scene is actually rendered. This means there is no overhead in setting render targets redundantly, etc. When frame buffers are concerned (OpenGL and friends), it will automatically switch between the main screen frame buffer a hidden frame buffer meant for off-screen rendering and put the activated render targets there.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A base class for compiled shaders, providing a generic interface for setting and getting data from shaders. A CShader object will have one of these per shader part (vertex, pixel, goemetry, etc.) This is overridden by classes that specialize it for OpenGL GLSL, DirectX HLSL, etc.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A shader for the graphics engine. This is the object into which the source code is fed and a compiled runnable shader is output.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: The base class for shaders. This is overridden by classes specific to a given graphics API.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Handles the meat of parsing a shader file. Bison performs the actual parsing, but all nodes are sent to this class to be managed. This is the go-to class for any information needed on a parsed shader.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Wrapper for the Bison generated syntax parser of the engine script language.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A single scope within a stack of scopes. When a new scope is created, it is pushed to the top of a stack of scopes. The top of the stack is always the current scope.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A stack of scopes. The bottom scope is global. The top scope is the current scope.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: An animated sprite. This allows easy playback of a series of cells on a single texture.

Copyright L. Spiro 2012 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A standard 2D sprite class. Sprites can be rendered in immediate mode but this is slower. Use CSprite::Begin() and CSprite::End() for high-performance rendering.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A standard cube texture. It can be set as a render target if LSG_TU_MODIFYABLE is set.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A floating-point texture. The format of the texture depends on the hardware's capabilities. This is 2D and typically used for shadow mapping.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A standard texture. Used for diffuse materials, mainly. Also sprites etc.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: The base class for textures.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A texture manager. It handles sharing of textures and prevents duplicate textures from being stored.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Creates adjacency information for the preparation of the conversion from a triangle list to a triangle strip. Code based on Pierre Terdiman's original work.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: Creates a single one-sided triangle strip. Code based on Pierre Terdiman's original work.

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: A vertex buffer. The base class for this depends on the graphics API. We do not use polymorpism here, though in debug mode some functions will be virtual as a means of ensuring the API interface matches between all underlying API vertex buffer classes. Using a vertex buffer is simple: #1: Specify the buffer properties. #2: Fill it with vertex data. #3: Call Finalize() and it is ready to be used for rendering. Before Finalize() is called, you can still add vertices even if you specified a buffer with the LSG_VBAF_READ_ONLY flag. This flag is used only after the vertex data is uploaded to the hardware, which happens after a call to Finalize().

Copyright L. Spiro 2011 All rights reserved.

Written by: Shawn (L. Spiro) Wilcoxen

This code may not be sold or traded for any personal gain without express written consent. You may use this code in your own projects and modify it to suit your needs as long as this disclaimer remains intact. You may not take credit for having written this code.

Description: This is a nifty solution to a special case. The ultimate goal is simply to create one class for each graphics API (OpenGL, OpenGL ES, DirectX 9, etc.) and have them all share the same public interface. From there, we would simply create a class called CVertexBuffer that is merely a typedef of one of the API classes--or instead inherits from one of the API classes--based on which API is active.


Typedef Documentation

typedef CDirectX11 lsg::CBaseApi

The API type. Each API has essentially the same interface, so we simply define here which "class" we will use.

typedef class CDirectX9ShaderManager lsg::CShaderManager

The shader manager type.

typedef CSharedPtr<CAnimSprite> lsg::CSharedAnimSpritePtr

A shared animated sprite pointer.

typedef CSharedPtr<CCubeTexture> lsg::CSharedCubeTexPtr

A shared pointer to a standard texture.

typedef CSharedPtr<CShader> lsg::CSharedShaderPtr

A shared pointer to a standard texture.

typedef CSharedPtr<CSprite> lsg::CSharedSpritePtr

A shared sprite pointer.

A shared pointer to a standard texture.

A single cell within an animation.

Information needed by the render queue for sorting.

Class CRenderQueueItem Description: Information needed by the render queue for sorting.

A structure that provides an alternative and possibly simpler way to create textures.

A unique element in a vertex buffer.

Vertex buffer contents.


Enumeration Type Documentation

anonymous enum

The maximum number of simultaneous render targets. This number of render targets may not not necessarily be supported on all platforms, and system metrics need to be polled. The total number of usable slots is the min between this number and the system metrics.

The blend types we support. These are for blending to the backbuffer only.

Enumerator:
LSG_BM_ZERO 

Blend factor is (0, 0, 0, 0).

LSG_BM_ONE 

Blend factor is (1, 1, 1, 1).

LSG_BM_SRC_COLOR 

Blend factor is (Rs, Gs, Bs, As).

LSG_BM_INV_SRC_COLOR 

Blend factor is (1 - Rs, 1 - Gs, 1 - Bs, 1 - As).

LSG_BM_DST_COLOR 

Blend factor is (Rd, Gd, Bd, Ad).

LSG_BM_INV_DST_COLOR 

Blend factor is (1 - Rd, 1 - Gd, 1 - Bd, 1 - Ad).

LSG_BM_SRC_ALPHA 

Blend factor is (As, As, As, As).

LSG_BM_INV_SRC_ALPHA 

Blend factor is (1 - As, 1 - As, 1 - As, 1 - As).

LSG_BM_DST_ALPHA 

Blend factor is (Ad Ad Ad Ad).

LSG_BM_INV_DEST_ALPHA 

Blend factor is (1 - Ad 1 - Ad 1 - Ad 1 - Ad).

LSG_BM_SRC_ALPHA_SAT 

Blend factor is (f, f, f, 1); where f = min(As, 1 - Ad).

Buffers.

Culling modes.

Depth-test functions.

Enumerator:
LSG_DT_NEVER 

Never passes.

LSG_DT_ALWAYS 

Always passes.

LSG_DT_LESS 

Passes if less than the existing value in the buffer.

LSG_DT_EQUAL 

Passes if equal to the existing value in the buffer.

LSG_DT_NOTEQUAL 

Passes if not equal to the existing value in the buffer.

LSG_DT_LESSEQUAL 

Passes if less than or equal to the existing value in the buffer.

LSG_DT_GREATER 

Passes if greater than the existing value in the buffer.

LSG_DT_GREATEREQUAL 

Passes if greater than or equal the existing value in the buffer.

Fill modes.

Enumerator:
LSG_FM_SOLID 

Solid filling mode.

LSG_FM_WIRE 

Wire-frame filling mode.

Type of fog. Linear, exponential, or exponential squared.

Usage types.

Interpolation qualifiers. Bits follow LSG_STORAGE_QUALIFIER.

Types of lights.

Enumerator:
LSG_LT_NONE 

Light is off.

LSG_LT_DIR 

Directional light.

LSG_LT_POINT 

Point light.

LSG_LT_SPOT 

Spot light.

Mapping types.

System metrics.

Enumerate node types.

Numeric constant types.

Enumerate node types.

Numeric constant types.

Surface formats used specifically with render targets. Because render targets are not meant to be used as textures directly, these formats are specific to the functionality we will need for render targets.

Enumerator:
LSG_RTF_RGB16 

16-bit color buffer with no alpha.

LSG_RTF_RGBA16 

16-bit color buffer with alpha.

LSG_RTF_RGB32 

32-bit color buffer with no alpha.

LSG_RTF_RGBA32 

32-bit color buffer with alpha.

LSG_RTF_RGB10_A2 

32-bit color buffer with alpha.

LSG_RTF_R_F16 

16-bit floating-point red-color buffer.

LSG_RTF_R_F32 

32-bit floating-point red-color buffer.

LSG_RTF_RG_F32 

32-bit floating-point red-and-green-color buffer.

LSG_RTF_RG_F64 

64-bit floating-point red-and-green-color buffer.

LSG_RTF_RGBA_F64 

64-bit floating-point color buffer with alpha.

LSG_RTF_RGBA_F128 

128-bit floating-point color buffer with alpha.

LSG_RTF_DEPTH16 

16-bit or greater depth buffer.

LSG_RTF_DEPTH24 

24-bit or greater depth buffer.

LSG_RTF_DEPTH32 

32-bit depth buffer.

LSG_RTF_DEPTH15_STENCIL1 

15-bit or greater depth buffer and 1-bit or greater stencil buffer.

LSG_RTF_DEPTH24_STENCIL4 

24-bit or greater depth buffer and 4-bit or greater stencil buffer.

LSG_RTF_DEPTH24_STENCIL8 

24-bit or greater depth buffer and 8-bit or greater stencil buffer.

LSG_RTF_TOTAL 

Total formats.

Render types.

Enumerator:
LSG_RT_NORMAL 

A normal (ambient + lighting) render.

LSG_RT_AMBIENTONLY 

An ambient-only pass.

LSG_RT_LIGHTING 

A lighting pass.

LSG_RT_SHADOWMAP 

A shadow-map pass.

Storage qualifiers. Bit masks are used.

Texture blending modes.

Enumerator:
LSG_TBM_TRANSLUCENT 

Color + alpha of the texture.

LSG_TBM_ADDITIVE 

Added to the previous layer.

LSG_TBM_MODULATE 

Multiplied by the previous layer.

LSG_TBM_MODULATE2 

Multiplied by 2 and then by the previous layer.

LSG_TBM_OVER 

Overwrites previous layer.

Texture filtering type.

Enumerator:
LSG_TFT_ANISOTROPIC 

Anisotropic sampling.

LSG_TFT_LINEAR 

Smooth sampling.

LSG_TFT_NEAREST 

Point sampling.

Texture-related metrics.

Enumerator:
LSG_TM_MAX_SLOTS 

Maximum texture slots we support.

Texture usage formats.

Enumerator:
LSG_UF_NORMAL 

Standard texture.

LSG_UF_CUBE_MAP 

Cube texture.

LSG_UF_SHADOW_MAP 

Texture used for shadow mapping.

LSG_UF_COLOR_MAP 

Texture used for color mapping.

LSG_UF_NORMAL_MAP 

Texture used for normal mapping.

Texture usage types.

Enumerator:
LSG_TU_SETONLY 

Texture is never modified after being created.

LSG_TU_MODIFYABLE 

Texture can be modified after being created.

LSG_TU_RENDERTARGET 

Texture is a render target.

LSG_TU_BITS 

Number of bits in the texture usage type field.

Predefined vertex attributes.

Access flags.

Enumerator:
LSG_VBAF_READ_ONLY 

Vertex data can be read but not written to.

LSG_VBAF_READ_WRITE 

Vertex data can be read and written to.

Metrics.

Primitive types.

Enumerator:
LSG_VBP_TRIANGLELIST 

Triangle lists.

LSG_VBP_TRIANGLESTRIP 

Triangle strips.

Usage types.

Enumerator:
LSG_VBUT_SETONLY 

Vertex data is never read or written to.

LSG_VBUT_STANDARD 

Vertex data is not read or written to often by the CPU.

LSG_VBUT_DYNAMIC 

Vertex data is updated frequently.

Wrapping modes.


Function Documentation

CRenderQueue& LSE_CALL lsg::AlphaRenderQueue ( )

Gets the alpha render queue.

Returns:
Returns the alpha render queue.
LSBOOL LSE_CALL lsg::CreateApiIndexBuffer ( ) [protected]

Create an index buffer for the graphics API. This should use the data in this object to create the buffer.

Returns:
Returns false if there are any errors during the creation of the API index buffer. This always indicates a lack of resources.
LSBOOL LSE_CALL lsg::CreateApiTexture ( ) [protected]

Create a Direct3D 11 texture and fill it with our texel data. Mipmaps are generated if necessary.

Returns:
Returns tue if the creation and filling of the texture succeeds. False indicates a resource error.
LSBOOL LSE_CALL lsg::CreateCubeTexture ( LSUINT32  _ui32Size,
LSUINT32  _ui32Usage,
LSI_PIXEL_FORMAT  _pfFormat = LSI_PF_R8G8B8,
LSBOOL  _bMipMaps = true,
CAllocator *  _paAllocator = NULL 
)

Create a cube texture.

Parameters:
_ui32SizeSize of the texture to create.
_ui32UsageTexture usage.
_pfFormatFormat of the cube texture to create.
_bMipMapsIf true, mipmaps are generated.
_paAllocatorOptional allocator for all allocations made by this texture object.
Returns:
Returns true if creation of the texture succeeds.
LSBOOL LSE_CALL lsg::CreateFloatingPointTexture ( LSUINT32  _ui32Width,
LSUINT32  _ui32Height 
)

Create a floating-point texture with the given dimentions. The texture can not be modified by the CPU, so there is no Finalize() function, unlike with other texture types.

Parameters:
_ui32WidthWidth of the texture to create.
_ui32HeightHeight of the texture to create.
Returns:
Returns true if there were available resources for creating a floating-point texture with the given dimensions.
LSBOOL LSE_CALL lsg::CreateIndexBuffer ( LSUINT32  _ui32InitialElements,
LSUINT32  _ui32Usage,
LSBOOL  _bUse32Bits = false,
CAllocator *  _paAllocator = NULL 
)

Create an index buffer, pre-allocating the given number of indices.

Parameters:
_ui32InitialElementsNumber of initial elements to pre-allocate.
_ui32UsageUsage type.
_bUse32BitsIf true, the list will start at 32 bits per index. Use this only if you know for sure that the index buffer will contain at least one value greater than 0xFFF.
_paAllocatorOptional allocator to be used for all allocations made by this object.
Returns:
Returns true if the index buffer was initialized. A return of false indicates lack of sufficient memory.
LSBOOL LSE_CALL lsg::CreateIndexBufferFromVertexBuffer ( CVertexBuffer &  _vbBuffer,
LSUINT32  _ui32Usage,
CAllocator *  _paAllocator = NULL 
)

Create an index buffer based on a vertex buffer. Modifies the vertex buffer, removing duplicate elements.

Parameters:
_vbBufferThe vertex buffer from which to create the index buffer.
_ui32UsageUsage type.
_paAllocatorOptional allocator to be used for all allocations made by this object.
Returns:
Returns true if the index buffer was initialized. A return of false indicates lack of sufficient memory.
LSBOOL LSE_CALL lsg::CreateTriangleStripGrid ( LSUINT32  _ui32VerticesPerRow,
LSUINT32  _ui32Rows,
LSUINT32  _ui32Usage,
CAllocator *  _paAllocator = NULL 
)

Create an index buffer forming a grid as a triangle strip.

Parameters:
_ui32VerticesPerRowNumber of vertices in a row. This is usually the number of columns in the vertex data plus 1. In other words, if you want to generate a strip on a tube composed of 6 columns and 12 rows, you would pass 7 here and 12 for _ui32Rows.
_ui32RowsThe number of rows in the vertex data. For example, a 1-by-1 square triangle strip can be generated by passing 2 for _ui32VerticesPerRow (1 + 1) and 1 for _ui32Rows.
_ui32UsageUsage type.
_paAllocatorOptional allocator to be used for all allocations made by this object.
Returns:
Returns true if the index buffer was initialized. A return of false indicates lack of sufficient memory.
LSVOID LSE_CALL lsg::EndRender ( )

End each render target after drawing.

LSE_INLINE LSUINT32 LSE_CALL lsg::CRenderTargetManager::Failures ( ) const

Gets the number of failed render targets on the last call to Finalize().

Returns:
Returns the number of failed render targets on the last call to Finalize().
LSBOOL LSE_CALL lsg::Finalize ( )

Register the index buffer's contents with the graphics hardware. If the buffer is not writable, adding/modifying indices after this call will result in an error. Call this when you are done setting the contents of the buffer and wish to use it.

Returns:
Returns false if the buffer could not be registered with the hardware due to resource limitations.

Finalizes the configuration of the render targets, activating all set color, depth, and stencil targets that have been applied or activating the back buffer if none have been applied.

Returns:
Returns the number of render targets that failed to get set.

Finalize the texture. After this is done, if the texture is set-only, it can no longer be modified. Otherwise it must be locked before it can be modified.

Returns:
Returns true if there were no errors submitting the texture data to the hardware.
LSE_INLINE const LSUINT16 *LSE_CALL lsg::CIndexBuffer::Get16BitIndices ( ) const

Get a pointer to the start of the index array as 16-bit values. ** Must be locked.

Returns:
Returns a pointer to the start of the index array if the buffer is locked, NULL otherwise.
LSE_INLINE const LSUINT32 *LSE_CALL lsg::CIndexBuffer::Get32BitIndices ( ) const

Get a pointer to the start of the index array as 32-bit values. ** Must be locked.

Returns:
Returns a pointer to the start of the index array if the buffer is locked, NULL otherwise.
LSE_INLINE const LSVOID *LSE_CALL lsg::CIndexBuffer::GetIndices ( ) const

Get a pointer to the start of the index array. ** Must be locked.

Returns:
Returns a pointer to the start of the index array if the buffer is locked, NULL otherwise.

Get a pointer to the (sorted) index data.

Returns:
Returns a pointer to the (sorted) index data.
LSE_INLINE LSBOOL LSE_CALL lsg::CIndexBuffer::IndicesAre32Bits ( ) const

Determine whether or not the list is using 32-bit indices.

Returns:
Returns true if the list is using 32-bit indices.
LSVOID LSE_CALL lsg::InitApi ( CAllocator *  _paAllocator) [protected]

Initialize the API class.

Parameters:
_paAllocatorThe allocator to use for all allocations made by this class. May be NULL.
LSBOOL LSE_CALL lsg::LoadCubeTextureFromFiles ( const LSCHAR *  _pcPaths[6],
LSUINT32  _ui32Usage,
LSBOOL  _bMipMaps = true,
CAllocator *  _paAllocator = NULL 
)

Create a cube texture from a set of paths to images on disk.

Parameters:
_pcPathsThe array of NULL-terminated paths to image files. Each must be in UTF-8 format.
_ui32UsageTexture usage.
_pfFormatFormat of the cube texture to create.
_bMipMapsIf true, mipmaps are generated.
_paAllocatorOptional allocator for all allocations made by this texture object.
Returns:
Returns true if creation of the texture succeeds.
LSBOOL LSE_CALL lsg::LoadCubeTextureFromMemory ( const LSVOID **  _ppvBuffers,
LSUINT32  _ui32Sizes[6],
LSUINT32  _ui32Usage,
LSBOOL  _bMipMaps = true,
CAllocator *  _paAllocator = NULL 
)

Create a cube texture from a set of images loaded to memory.

Parameters:
_ppvBuffersThe loaded images of the cube texture faces.
_ui32SizesThe sizes of each image.
_ui32UsageTexture usage.
_pfFormatFormat of the cube texture to create.
_bMipMapsIf true, mipmaps are generated.
_paAllocatorOptional allocator for all allocations made by this texture object.
Returns:
Returns true if creation of the texture succeeds.
LSBOOL LSE_CALL lsg::Lock ( )

Lock the index buffer for updating. Fails for set-only buffers that have been finalized. Every successful call to Lock() must be paired with a call to UnLock().

Returns:
Returns true if the buffer was locked. If false is returned, do not call UnLock().
LSBOOL LSE_CALL lsg::MakeTriangleStrip ( )

Convert the index buffer to a triangle strip.

Returns:
Returns true if the buffer was converted.
virtual LSUINT32 LSE_CALL lsg::NewLex ( ) [virtual]

Perform the work of scanning input for tokens.

Returns:
Returns the next token.
CRenderQueue& LSE_CALL lsg::OpaqueRenderQueue ( )

Gets the opaque render queue.

Returns:
Returns the opaque render queue.
CIndexBuffer& LSE_CALL lsg::operator= ( const CIndexBuffer &  _ibOther)

Copy operator.

Parameters:
_ibOtherThe object to copy.
Returns:
Returns this object after the copy.
LSE_INLINE CRenderQueueSet& LSE_CALL lsg::operator= ( const CRenderQueueSet &  _rqsOther)

Assignment operator.

Parameters:
_rqsOtherThe object to copy.
Returns:
Returns the copied instance.
LSE_INLINE CRenderQueue& LSE_CALL lsg::operator= ( const CRenderQueue &  _rqOther)

Assignment operator.

Parameters:
_rqOtherThe object to copy.
Returns:
Returns the copied instance.
LSE_INLINE LSVOID LSE_CALL lsg::CRenderQueue::PrepareUnsortedRender ( )

Prepares for an unordered render. Is sort is not called, this must be called before rendering.

LSBOOL LSE_CALL lsg::PushIndex ( LSUINT32  _ui32Index)

Push an index to the back of the list. Must either be locked or not yet finalized.

Parameters:
_ui32IndexThe index to add to the end of the index buffer.
Returns:
Returns true if there is enough memory to perform the option.
LSE_INLINE LSVOID LSE_CALL lsg::Render ( LSG_RENDER_TYPE  _rtRenderType) const

Render the sorted items using a non-standard render method.

Parameters:
_rtRenderTypeType of render.
LSE_INLINE LSVOID LSE_CALL lsg::Render ( const CVertexBuffer &  _vbBuffer,
LSUINT32  _ui32TotalPrimitives 
) const [protected]

Render using this buffer.

Parameters:
_vbBufferThe buffer
_ui32TotalPrimitivesTotal primitives to render.
LSE_INLINE LSVOID LSE_CALL lsg::CRenderQueue::RenderAmbient ( ) const

Render the sorted items using ambient-only rendering.

LSVOID LSE_CALL lsg::RenderApi ( const CVertexBuffer &  _vbBuffer,
LSUINT32  _ui32TotalPrimitives 
) const [protected]

Render the scene with the given vertex buffer.

Parameters:
_vbBufferThe buffer
_ui32TotalPrimitivesTotal primitives to render.
LSE_INLINE LSVOID LSE_CALL lsg::CRenderQueue::RenderLighting ( ) const

Render the sorted items using lighting rendering.

LSE_INLINE LSVOID LSE_CALL lsg::CRenderQueue::RenderNormal ( ) const

Render the sorted items using normal rendering.

LSE_INLINE LSVOID LSE_CALL lsg::CRenderQueue::RenderShadowMap ( ) const

Render the sorted items to a shadow map.

LSVOID LSE_CALL lsg::Reset ( )

Reset everything to scratch.

Resets everything to scratch.

Reset everything. Clears all resources created by this instance.

Reset all contents.

LSVOID LSE_CALL lsg::ResetApi ( ) [protected]

Reset the API values.

Destroy the index buffer that is compliant with the current graphics API and all related resources.

LSVOID LSE_CALL lsg::SetAllocator ( CAllocator *  _paAllocator)

Set the allocator to be used for all allocations made by this object. If the allocator is not the same as the one already set, the index buffer is completely reset.

Parameters:
_paAllocatorThe allocator to set.
LSVOID LSE_CALL lsg::SetApiStripType ( LSG_VERTEX_BUFFER_PRIMITIVES  _vbpType) [protected]

Set the API type. Accepts a graphics engine type and stores the value needed for the graphics API.

Parameters:
_vbpTypeThe graphics engine index list type.
LSBOOL LSE_CALL lsg::SetCells ( const LSG_ANIM_CELL *  _pacCells,
LSUINT32  _ui32Total 
)

Sets the array of cells to be used by this sprite.

Parameters:
_pacCellsPointer to the cells to be used by this animated sprite.
_ui32TotalNumber of cells to which _pacCells points.
Returns:
Returns true if there was enough memory to store the cells locally.
LSE_INLINE LSBOOL LSE_CALL lsg::CIndexBuffer::SetIndex ( LSUINT32  _ui32IndexIndex,
LSUINT32  _ui32Value 
)

Set an index at the given index.

Parameters:
_ui32IndexIndexIndex in the buffer of the index to set.
_ui32ValueThe new value of the index.
Returns:
Returns true if the index at the given index exists in the list. If the new value of the index requires the index buffer to upgrade to 32-bit values, false may be returned if there is not enough memory to perform the upgrade.
LSVOID LSE_CALL lsg::SetInternal ( LSUINT32  _ui32Size,
LSUINT32  _ui32Usage,
LSI_PIXEL_FORMAT  _pfFormat,
LSBOOL  _bMipMaps 
) [protected]

Set internal parameters.

Parameters:
_ui32SizeSize of the texture.
_ui32UsageTexture usage.
_pfFormatFormat of the cube texture.
_bMipMapsMipmap value.
LSVOID LSE_CALL lsg::Tick ( LSUINT64  _ui64Time)

Advance the animation by the given number of microseconds.

Parameters:
_ui64TimeThe number of microseconds by which to advance the animation.
LSVOID LSE_CALL lsg::TickForward ( LSUINT64  _ui64Time) [protected]

Advance the animation forward by the given number of microseconds.

Parameters:
_ui64TimeThe number of microseconds by which to advance the animation.
LSE_INLINE LSUINT32 LSE_CALL lsg::TotalIndices ( ) const

Get the total number of indices in the index buffer.

Returns:
Returns the total number of indices in the index buffer.
LSBOOL LSE_CALL lsg::UnLock ( )

Unlock a buffer when it is done being updated. Must be done after a successful call to Lock().

Returns:
Returns true if the buffer was unlocked. A return of false indicates an error in updating the hardware with the new buffer data.
LSBOOL LSE_CALL lsg::UpgradeList ( ) [protected]

Upgrade the list from 16 bits to 32 bits. Does nothing if the list is already at 32 bits.

Returns:
Returns true if there was enough memory to perform the upgrade.

Variable Documentation

CImage lsg::m_iFaces[6]

Texels for each face of the cube.

Our index buffer used with Direct3D 11.

LSI_PIXEL_FORMAT lsg::m_pfFormat

Texture format.

ID3D11RenderTargetView* lsg::m_prtvView

The view for making it a render target.

ID3D11ShaderResourceView* lsg::m_psrvResourceView

The shader resource view.

D3D11_PRIMITIVE_TOPOLOGY lsg::m_ptPrimitiveType

The API primitive type.

ID3D11Texture2D* lsg::m_ptTexture

The Direct3D 11 cube texture.

CRenderQueue lsg::m_rqAlpha

The alpha render queue.

CRenderQueue lsg::m_rqOpaque

The opaque render queue.

LSUINT32 lsg::m_ui32Cell

The current cell of this animation.

The number of failures on the last call to Finalize().

LSUINT64 lsg::m_ui64Time

The current time of this animation.

The total time of this animation.

Our array of cells.

 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator