"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSGraphicsLib/Src/DirectXShaders/LSGDirectX10CompiledShader.h

00001 
00018 #ifndef __LSG_DIRECTX10COMPILEDSHADER_H__
00019 #define __LSG_DIRECTX10COMPILEDSHADER_H__
00020 
00021 #include "../LSGGraphicsLib.h"
00022 #include "../ShaderLanguage/LSGCompiledShaderBase.h"
00023 #include "../ShaderLanguage/LSGShaderBase.h"
00024 
00025 #ifdef LSG_DX10
00026 
00027 namespace lsg {
00028 
00038         class CDirectX10CompiledShader : public CCompiledShaderBase {
00039         public :
00040                 // == Various constructors.
00041                 LSE_CALLCTOR                                                                            CDirectX10CompiledShader();
00042                 LSE_CALLCTOR                                                                            ~CDirectX10CompiledShader();
00043 
00044 
00045                 // == Functions.
00049                 virtual LSVOID LSE_CALL                                                         Reset();
00050 
00057                 LSBOOL LSE_CALL                                                                         SetUniforms( const CShaderTranslationProcessorBase::LSG_UNIFORM_LIST &_ulUniforms );
00058 
00065                 CShaderBase::LSG_HANDLE LSE_CALL                                        GetConstantByName( const LSCHAR * _pcName );
00066 
00074                 LSBOOL LSE_CALL                                                                         SetFloat( CShaderBase::LSG_HANDLE _hHandle, LSFLOAT _fValue );
00075 
00084                 LSBOOL LSE_CALL                                                                         SetFloatArray( CShaderBase::LSG_HANDLE _hHandle, const LSFLOAT * _pfValues, LSUINT32 _ui32Total );
00085 
00093                 LSBOOL LSE_CALL                                                                         SetInt( CShaderBase::LSG_HANDLE _hHandle, LSINT32 _iValue );
00094 
00103                 LSBOOL LSE_CALL                                                                         SetIntArray( CShaderBase::LSG_HANDLE _hHandle, const LSINT32 * _piValues, LSUINT32 _ui32Total );
00104 
00112                 LSBOOL LSE_CALL                                                                         SetBool( CShaderBase::LSG_HANDLE _hHandle, LSBOOL _bValue );
00113 
00122                 LSBOOL LSE_CALL                                                                         SetBoolArray( CShaderBase::LSG_HANDLE _hHandle, const LSBOOL * _pbValues, LSUINT32 _ui32Total );
00123 
00131                 LSBOOL LSE_CALL                                                                         SetVector2( CShaderBase::LSG_HANDLE _hHandle, const CVector2 &_vValue );
00132 
00141                 LSBOOL LSE_CALL                                                                         SetVector2Array( CShaderBase::LSG_HANDLE _hHandle, const CVector2 * _pvValues, LSUINT32 _ui32Total );
00142 
00150                 LSBOOL LSE_CALL                                                                         SetVector3( CShaderBase::LSG_HANDLE _hHandle, const CVector3 &_vValue );
00151 
00160                 LSBOOL LSE_CALL                                                                         SetVector3Array( CShaderBase::LSG_HANDLE _hHandle, const CVector3 * _pvValues, LSUINT32 _ui32Total );
00161 
00169                 LSBOOL LSE_CALL                                                                         SetVector4( CShaderBase::LSG_HANDLE _hHandle, const CVector4 &_vValue );
00170 
00179                 LSBOOL LSE_CALL                                                                         SetVector4Array( CShaderBase::LSG_HANDLE _hHandle, const CVector4 * _pvValues, LSUINT32 _ui32Total );
00180 
00188                 LSBOOL LSE_CALL                                                                         SetMatrix2x2( CShaderBase::LSG_HANDLE _hHandle, const CMatrix2x2 &_mValue );
00189 
00197                 LSBOOL LSE_CALL                                                                         SetMatrix3x3( CShaderBase::LSG_HANDLE _hHandle, const CMatrix3x3 &_mValue );
00198 
00206                 LSBOOL LSE_CALL                                                                         SetMatrix4x4( CShaderBase::LSG_HANDLE _hHandle, const CMatrix4x4 &_mValue );
00207 
00216                 LSBOOL LSE_CALL                                                                         SetMatrix4x4Array( CShaderBase::LSG_HANDLE _hHandle, const CMatrix4x4 * _pmValues, LSUINT32 _ui32Total );
00217 
00223                 LSE_INLINE const void * LSE_CALL                                        GetBufferPointer() const;
00224 
00230                 LSE_INLINE SIZE_T LSE_CALL                                                      GetBufferSize() const;
00231 
00232 
00233         protected :
00234                 // == Types.
00238                 typedef struct LSG_CONSTANT_MAP {
00242                         LSUINT32                                                                                ui32Name;
00243 
00247                         LSUINT32                                                                                ui32CBufferIndex;
00248 
00252                         LSUINT32                                                                                ui32DataPtr;
00253                 } * LPLSG_CONSTANT_MAP, * const LPCLSG_CONSTANT_MAP;
00254 
00258                 typedef struct LSG_CS_CBUFFER {
00262                         LSBOOL                                                                                  bDirty;
00263 
00267                         CVector<LSUINT8, LSUINT32>                                              vRaw;
00268                 } * LPLSG_CS_CBUFFER, * const LPCLSG_CS_CBUFFER;
00269 
00270 
00271                 // == Members.
00275                 ID3D10Blob *                                                                            m_pbShader;
00276 
00280                 CVectorPoD<ID3D10Buffer *>                                                      m_vConstantBuffers;
00281 
00285                 CVector<LSG_CS_CBUFFER>                                                         m_vConstBufferRawData;
00286 
00290                 CShaderTranslationProcessorBase::LSG_UNIFORM_LIST       m_ulUniforms;
00291 
00295                 CVectorPoD<LSG_CONSTANT_MAP>                                            m_vConstantMap;
00296 
00300                 CVectorPoD<LSUINT8, LSUINT32>                                           m_vTempBuffer;
00301 
00302 
00303                 // == Functions.
00304 
00305 
00306         private :
00307                 typedef CCompiledShaderBase                                                     Parent;
00308         };
00309 
00310 
00311         // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00312         // DEFINITIONS
00313         // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00314         // == Functions.
00320         LSE_INLINE const void * LSE_CALL CDirectX10CompiledShader::GetBufferPointer() const {
00321                 return m_pbShader ? m_pbShader->GetBufferPointer() : NULL;
00322         }
00323 
00329         LSE_INLINE SIZE_T LSE_CALL CDirectX10CompiledShader::GetBufferSize() const {
00330                 return m_pbShader ? m_pbShader->GetBufferSize() : 0UL;
00331         }
00332 
00333 }       // namespace lsg
00334 
00335 #endif  // #ifdef LSG_DX10
00336 
00337 #endif  // __LSG_DIRECTX10COMPILEDSHADER_H__
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator