"L. Spiro Engine"

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

00001 
00021 #ifndef __LSG_DIRECTX11SHADER_H__
00022 #define __LSG_DIRECTX11SHADER_H__
00023 
00024 #include "../LSGGraphicsLib.h"
00025 #include "../ShaderLanguage/LSGShaderBase.h"
00026 #include "LSGDirectX11PixelShader.h"
00027 #include "LSGDirectX11ShaderTranslator.h"
00028 #include "LSGDirectX11VertexShader.h"
00029 
00030 #ifdef LSG_DX11
00031 
00032 namespace lsg {
00033 
00034         class CDirectX11ShaderManager;
00035 
00047         class CDirectX11Shader : public CShaderBase {
00048         public :
00049                 // == Various constructors.
00050                 LSE_CALLCTOR                                                                            CDirectX11Shader();
00051                 virtual LSE_CALLCTOR                                                            ~CDirectX11Shader();
00052 
00053 
00054                 // == Functions.
00058                 LSVOID LSE_CALL                                                                         Reset();
00059 
00067                 virtual LSUINT64 LSE_CALL                                                       GetId() const;
00068 
00076                 virtual LSBOOL LSE_CALL                                                         Activate( LSVOID * _pvSysValue );
00077 
00081                 virtual LSVOID LSE_CALL                                                         Deactivate();
00082 
00086                 virtual LSVOID LSE_CALL                                                         PreRender();
00087 
00094                 virtual LSG_HANDLE LSE_CALL                                                     GetConstantByName( const LSCHAR * _pcName );
00095 
00103                 virtual LSBOOL LSE_CALL                                                         SetFloat( CShaderBase::LSG_HANDLE _hHandle, LSFLOAT _fValue );
00104 
00113                 virtual LSBOOL LSE_CALL                                                         SetFloatArray( LSG_HANDLE _hHandle, const LSFLOAT * _pfValues, LSUINT32 _ui32Total );
00114 
00122                 virtual LSBOOL LSE_CALL                                                         SetInt( LSG_HANDLE _hHandle, LSINT32 _iValue );
00123 
00132                 virtual LSBOOL LSE_CALL                                                         SetIntArray( LSG_HANDLE _hHandle, const LSINT32 * _piValues, LSUINT32 _ui32Total );
00133 
00141                 virtual LSBOOL LSE_CALL                                                         SetBool( LSG_HANDLE _hHandle, LSBOOL _bValue );
00142 
00151                 virtual LSBOOL LSE_CALL                                                         SetBoolArray( LSG_HANDLE _hHandle, const LSBOOL * _pbValues, LSUINT32 _ui32Total );
00152 
00160                 virtual LSBOOL LSE_CALL                                                         SetVector2( LSG_HANDLE _hHandle, const CVector2 &_vValue );
00161 
00170                 virtual LSBOOL LSE_CALL                                                         SetVector2Array( LSG_HANDLE _hHandle, const CVector2 * _pvValues, LSUINT32 _ui32Total );
00171 
00179                 virtual LSBOOL LSE_CALL                                                         SetVector3( LSG_HANDLE _hHandle, const CVector3 &_vValue );
00180 
00189                 virtual LSBOOL LSE_CALL                                                         SetVector3Array( LSG_HANDLE _hHandle, const CVector3 * _pvValues, LSUINT32 _ui32Total );
00190 
00198                 virtual LSBOOL LSE_CALL                                                         SetVector4( LSG_HANDLE _hHandle, const CVector4 &_vValue );
00199 
00208                 virtual LSBOOL LSE_CALL                                                         SetVector4Array( LSG_HANDLE _hHandle, const CVector4 * _pvValues, LSUINT32 _ui32Total );
00209 
00217                 virtual LSBOOL LSE_CALL                                                         SetMatrix2x2( LSG_HANDLE _hHandle, const CMatrix2x2 &_gmValue );
00218 
00226                 virtual LSBOOL LSE_CALL                                                         SetMatrix3x3( LSG_HANDLE _hHandle, const CMatrix3x3 &_gmValue );
00227 
00235                 virtual LSBOOL LSE_CALL                                                         SetMatrix4x4( LSG_HANDLE _hHandle, const CMatrix4x4 &_gmValue );
00236 
00245                 virtual LSBOOL LSE_CALL                                                         SetMatrix4x4Array( LSG_HANDLE _hHandle, const CMatrix4x4 * _pmValues, LSUINT32 _ui32Total );
00246 
00247 
00248         protected :
00249                 // == Types.
00253                 typedef struct LSG_DX11_SHADER_HANDLE {
00257                         LSG_HANDLE                                                                              hVertexHandle;
00258 
00262                         LSG_HANDLE                                                                              hPixelHandle;
00263 
00267                         LSUINT32                                                                                ui32Name;
00268 
00273                         CShaderLanguageParser::LSG_SHADER_TYPES                 stType;
00274                 } * LPLSG_DX11_SHADER_HANDLE, * const LPCLSG_DX11_SHADER_HANDLE;
00275 
00276 
00277                 // == Members.
00281                 CDirectX11VertexShader *                                                        m_pdx11vsVertexShader;
00282 
00286                 CDirectX11PixelShader *                                                         m_pdx11psPixelShader;
00287 
00291                 CDirectX11ShaderManager *                                                       m_pdx11smShaderManager;
00292 
00296                 CVectorPoD<LSG_DX11_SHADER_HANDLE>                                      m_vHandles;
00297 
00298 
00299                 // == Functions.
00303                 virtual LSVOID LSE_CALL                                                         CreateTranslator();
00304 
00308                 virtual LSVOID LSE_CALL                                                         DestroyTranslator();
00309 
00316                 virtual LSG_SHADER_ERRORS LSE_CALL                                      PostCompile( CString &_sError );
00317 
00318         private :
00319                 typedef CShaderBase                                                                     Parent;
00320         };
00321 
00322 }       // namespace lsg
00323 
00324 #endif  // #ifdef LSG_DX11
00325 
00326 #endif  // __LSG_DIRECTX11SHADER_H__
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator