CrystalSpace

Public API Reference

csgfx/lightsvcache.h

Go to the documentation of this file.
00001 /*
00002     Copyright (C) 2005 by Jorrit Tyberghein
00003               (C) 2005 by Frank Richter
00004 
00005     This library is free software; you can redistribute it and/or
00006     modify it under the terms of the GNU Library General Public
00007     License as published by the Free Software Foundation; either
00008     version 2 of the License, or (at your option) any later version.
00009 
00010     This library is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013     Library General Public License for more details.
00014 
00015     You should have received a copy of the GNU Library General Public
00016     License along with this library; if not, write to the Free
00017     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00018 */
00019 
00020 #ifndef __CS_CSGFX_SHADER_LIGHTSVCACHE_H__
00021 #define __CS_CSGFX_SHADER_LIGHTSVCACHE_H__
00022 
00023 #include "csextern.h"
00024 
00025 #include "csutil/array.h"
00026 #include "csutil/ref.h"
00027 #include "iutil/strset.h"
00028 
00036 class CS_CRYSTALSPACE_EXPORT csLightShaderVarCache
00037 {
00038 public:
00040   enum LightProperty
00041   {
00043     lightDiffuse = 0,
00045     lightSpecular,
00047     lightPosition,
00049     lightPositionCamera,
00051     lightPositionWorld,
00053     lightTransformCamera,
00055     lightTransformWorld,
00057     lightAttenuation,
00059     lightAttenuationTex,
00061     lightDirection,
00063     lightDirectionCamera,
00065     lightDirectionWorld,
00067     lightInnerFalloff,
00069     lightOuterFalloff,
00071     lightType,
00073     lightAttenuationMode,
00074 
00076     _lightCount
00077   };
00078 
00080   enum DefaultSV
00081   {
00083     varAmbient = 0,
00085     varLightCount,
00086     
00088     _varCount
00089   };
00090 private:
00091   struct LightSvIdCacheEntry
00092   {
00093     csStringID ids[_lightCount];
00094   };
00095   csArray<LightSvIdCacheEntry> lightSVIdCache;
00096   csRef<iStringSet> strings;
00097   csStringID defaultVars[_varCount];
00098   
00099   void ClearDefVars ();
00100 public:
00105   csLightShaderVarCache () { ClearDefVars(); }
00106   
00111   void SetStrings (iStringSet* strings);
00112   
00123   csStringID GetLightSVId (size_t num, LightProperty prop);
00124     
00134   csStringID GetDefaultSVId (DefaultSV var);
00135 };
00136 
00137 #endif // __CS_CSGFX_SHADER_LIGHTSVCACHE_H__

Generated for Crystal Space by doxygen 1.4.7