"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSGraphicsLib/Src/ShaderLanguage/LSGShader.h

00001 
00017 #ifndef __LSG_SHADER_H__
00018 #define __LSG_SHADER_H__
00019 
00020 #include "../LSGGraphicsLib.h"
00021 #include "../DirectXShaders/LSGDirectX9Shader.h"
00022 #include "../DirectXShaders/LSGDirectX10Shader.h"
00023 #include "../DirectXShaders/LSGDirectX11Shader.h"
00024 #include "../Fnd/LSGFnd.h"
00025 #include "../OpenGLEsShaders/LSGOpenGlEsShader.h"
00026 #include "../OpenGLShaders/LSGOpenGlShader.h"
00027 #include "SharedPtr/LSTLSharedPtr.h"
00028 
00029 namespace lsg {
00030 
00038         class CShader : public 
00039 #ifdef LSG_OGL
00040                 COpenGlShader
00041 #endif  // #ifdef LSG_OGL
00042 #ifdef LSG_OGLES
00043                 COpenGlEsShader
00044 #endif  // #ifdef LSG_OGLES
00045 #ifdef LSG_DX9
00046                 CDirectX9Shader
00047 #endif  // #ifdef LSG_DX9
00048 #ifdef LSG_DX10
00049                 CDirectX10Shader
00050 #endif  // #ifdef LSG_DX10
00051 #ifdef LSG_DX11
00052                 CDirectX11Shader
00053 #endif  // #ifdef LSG_DX11
00054         {
00055                 friend class                                                    CFnd;
00056         public :
00057                 // == Various constructors.
00058                 LSE_CALLCTOR                                                    CShader();
00059                 virtual LSE_CALLCTOR                                    ~CShader();
00060 
00061 
00062                 // == Types.
00066                 typedef struct LSG_LIGHT_FULLDATA {
00070                         LSUINT32                                                        ui32TotalLights;
00071 
00075                         LSUINT32                                                        ui32DirLights;
00076 
00080                         LSUINT32                                                        ui32PointLights;
00081 
00085                         LSUINT32                                                        ui32SpotLights;
00086 
00091                         CVector4                                                        gvLightVectors[LSG_MAX_LIGHTS];
00092 
00096                         CVector3                                                        gvSpotDirs[LSG_MAX_LIGHTS];
00097 
00101                         CVector4                                                        gvAmbient[LSG_MAX_LIGHTS];
00102 
00106                         CVector4                                                        gvDiffuse[LSG_MAX_LIGHTS];
00107 
00111                         CVector4                                                        gvSpecular[LSG_MAX_LIGHTS];
00112 
00116                         CVector4                                                        gvAtt[LSG_MAX_LIGHTS];
00117 
00121                         CVector4                                                        gvSpots[LSG_MAX_LIGHTS];
00122 
00126                         CVector4                                                        gcAmbientLight;
00127 
00131                         CVector4                                                        gcSkyColor;
00132 
00136                         CVector4                                                        gcGroundColor;
00137 
00141                         LSUINT32                                                        ui32DirtyCounter;
00142                 } * LPLSG_LIGHT_DATA, * const LPCLSG_LIGHT_DATA;
00143 
00147                 typedef struct LSG_FOG {
00151                         LSG_FOG_TYPE                                            ftType;
00152 
00156                         LSREAL                                                          cColor[3];
00157 
00161                         struct {
00162                                 LSREAL                                                  fStart,
00163                                                                                                 fEnd;
00164                         }                                                                       sLinear;
00168                         struct {
00169                                 LSREAL                                                  fDensity;
00170                         }                                                                       sExp;
00171                 } * LPLSG_FOG, * const LPCLSG_FOG;
00172 
00173 
00174                 // == Functions.
00178                 LSVOID LSE_CALL                                                 Reset();
00179                 
00187                 virtual LSG_SHADER_ERRORS LSE_CALL              PostCompile( CString &_sError );
00188 
00196                 virtual LSBOOL LSE_CALL                                 Activate( LSVOID * _pvSysValue );
00197 
00198 
00199         protected :
00200                 // == Types.
00204                 typedef struct LSG_ENGINE_UNIFORMS {
00208                         LSG_HANDLE                                                      hWorldMatrix;
00209 
00213                         LSG_HANDLE                                                      hWorldViewMatrix;
00214 
00218                         LSG_HANDLE                                                      hWorldViewProjMatrix;
00219 
00223                         LSG_HANDLE                                                      hViewMatrix;
00224 
00228                         LSG_HANDLE                                                      hTimeSinceLastFrame;
00229 
00233                         LSG_HANDLE                                                      hNormalMatrix;
00234 
00238                         LSG_HANDLE                                                      hTotalLights;
00239 
00243                         LSG_HANDLE                                                      hDirLights;
00244 
00248                         LSG_HANDLE                                                      hPointLights;
00249 
00253                         LSG_HANDLE                                                      hSpotLights;
00254 
00258                         LSG_HANDLE                                                      hLightVectors;
00259 
00263                         LSG_HANDLE                                                      hLightHalfVectors;
00264 
00268                         LSG_HANDLE                                                      hSpotLightVectors;
00269 
00273                         LSG_HANDLE                                                      hAttenuations;
00274 
00278                         LSG_HANDLE                                                      hSpotLight;
00279 
00283                         LSG_HANDLE                                                      hLightAmbients;
00284 
00288                         LSG_HANDLE                                                      hLightDiffuses;
00289 
00293                         LSG_HANDLE                                                      hLightSpeculars;
00294 
00298                         LSG_HANDLE                                                      hAmbientLight;
00299 
00303                         LSG_HANDLE                                                      hSkyColor;
00304 
00308                         LSG_HANDLE                                                      hGroundColor;
00309 
00313                         LSG_HANDLE                                                      hDiffuseMaterial;
00314 
00318                         LSG_HANDLE                                                      hAmbientMaterial;
00319 
00323                         LSG_HANDLE                                                      hEmissiveMaterial;
00324 
00328                         LSG_HANDLE                                                      hSpecularMaterial;
00329 
00333                         LSG_HANDLE                                                      hPower;
00334 
00338                         LSG_HANDLE                                                      hRoughness;
00339 
00343                         LSG_HANDLE                                                      hAnisotropy;
00344 
00348                         LSG_HANDLE                                                      hTexUnits[LSG_MAX_TEXTURE_UNITS];
00349 
00353                         LSG_HANDLE                                                      hTexMatrices;
00354 
00358                         LSG_HANDLE                                                      hFogStart;
00359 
00363                         LSG_HANDLE                                                      hFogEnd;
00364 
00368                         LSG_HANDLE                                                      hFogColor;
00369 
00373                         LSG_HANDLE                                                      hShadowMapping;
00374 
00378                         LSG_HANDLE                                                      hShadowMapUnit;
00379 
00383                         LSG_HANDLE                                                      hShadowMapMatrix;
00384 
00388                         LSG_HANDLE                                                      hShadowMapUVDepthScales;
00389 
00393                         LSG_HANDLE                                                      hShadowMapCasterSize;
00394                 } * LPLSG_ENGINE_UNIFORMS, * const LPCLSG_ENGINE_UNIFORMS;
00395 
00396 
00397                 // == Members.
00401                 LSG_ENGINE_UNIFORMS                                             m_euEngineHandles;
00402 
00406                 LSBOOL                                                                  m_bBeenActivated;
00407 
00408 
00409         private :
00410 #ifdef LSG_OGL
00411                 typedef COpenGlShader                                   Parent;
00412 #endif  // #ifdef LSG_OGL
00413 #ifdef LSG_OGLES
00414                 typedef COpenGlEsShader                                 Parent;
00415 #endif  // #ifdef LSG_OGLES
00416 #ifdef LSG_DX9
00417                 typedef CDirectX9Shader                                 Parent;
00418 #endif  // #ifdef LSG_DX9
00419 #ifdef LSG_DX10
00420                 typedef CDirectX10Shader                                Parent;
00421 #endif  // #ifdef LSG_DX10
00422 #ifdef LSG_DX11
00423                 typedef CDirectX11Shader                                Parent;
00424 #endif  // #ifdef LSG_DX11
00425         };
00426 
00427 
00428         // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00429         // DEFINITIONS
00430         // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00431         // == Types.
00435         typedef CSharedPtr<CShader>                                     CSharedShaderPtr;
00436 
00437 }       // namespace lsg
00438 
00439 #endif  // __LSG_SHADER_H__
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator