OgreShadowVolumeExtrudeProgram.h

Go to the documentation of this file.
00001 /*
00002 -----------------------------------------------------------------------------
00003 This source file is part of OGRE
00004 (Object-oriented Graphics Rendering Engine)
00005 For the latest info, see http://www.ogre3d.org/
00006 
00007 Copyright (c) 2000-2006 Torus Knot Software Ltd
00008 Also see acknowledgements in Readme.html
00009 
00010 This program is free software; you can redistribute it and/or modify it under
00011 the terms of the GNU Lesser General Public License as published by the Free Software
00012 Foundation; either version 2 of the License, or (at your option) any later
00013 version.
00014 
00015 This program is distributed in the hope that it will be useful, but WITHOUT
00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
00018 
00019 You should have received a copy of the GNU Lesser General Public License along with
00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
00022 http://www.gnu.org/copyleft/lesser.txt.
00023 
00024 You may alternatively use this source under the terms of a specific version of
00025 the OGRE Unrestricted License provided you have obtained such a license from
00026 Torus Knot Software Ltd.
00027 -----------------------------------------------------------------------------
00028 */
00029 
00030 #ifndef __SHADOWVOLUMEEXTRUDEPROGRAM_H__
00031 #define __SHADOWVOLUMEEXTRUDEPROGRAM_H__
00032 
00033 #include "OgrePrerequisites.h"
00034 #include "OgreLight.h"
00035 
00036 namespace Ogre {
00130     class _OgreExport ShadowVolumeExtrudeProgram : public ShadowDataAlloc
00131     {
00132     private:
00133         static String mPointArbvp1;
00134         static String mPointVs_1_1;
00135         static String mDirArbvp1;
00136         static String mDirVs_1_1;
00137         // same as above, except the color is set to 1 to enable debug volumes to be seen
00138         static String mPointArbvp1Debug;
00139         static String mPointVs_1_1Debug;
00140         static String mDirArbvp1Debug;
00141         static String mDirVs_1_1Debug;
00142         
00143         static String mPointArbvp1Finite;
00144         static String mPointVs_1_1Finite;
00145         static String mDirArbvp1Finite;
00146         static String mDirVs_1_1Finite;
00147         // same as above, except the color is set to 1 to enable debug volumes to be seen
00148         static String mPointArbvp1FiniteDebug;
00149         static String mPointVs_1_1FiniteDebug;
00150         static String mDirArbvp1FiniteDebug;
00151         static String mDirVs_1_1FiniteDebug;
00152 
00153         static bool mInitialised;
00154 
00155     public:
00156 #define OGRE_NUM_SHADOW_EXTRUDER_PROGRAMS 8
00157         enum Programs
00158         {
00159             // Point light extruder, infinite distance
00160             POINT_LIGHT = 0,
00161             // Point light extruder, infinite distance, debug mode
00162             POINT_LIGHT_DEBUG = 1,
00163             // Directional light extruder, infinite distance
00164             DIRECTIONAL_LIGHT = 2,
00165             // Directional light extruder, infinite distance, debug mode
00166             DIRECTIONAL_LIGHT_DEBUG = 3,
00167             // Point light extruder, finite distance
00168             POINT_LIGHT_FINITE = 4,
00169             // Point light extruder, finite distance, debug mode
00170             POINT_LIGHT_FINITE_DEBUG = 5,
00171             // Directional light extruder, finite distance
00172             DIRECTIONAL_LIGHT_FINITE = 6,
00173             // Directional light extruder, finite distance, debug mode
00174             DIRECTIONAL_LIGHT_FINITE_DEBUG = 7
00175 
00176         };
00177         static const String programNames[OGRE_NUM_SHADOW_EXTRUDER_PROGRAMS];
00178 
00180         static void initialise(void);
00182         static void shutdown(void);
00184         static const String& getPointLightExtruderArbvp1(void) { return mPointArbvp1; }
00186         static const String& getPointLightExtruderVs_1_1(void) { return mPointVs_1_1; }
00188         static const String& getDirectionalLightExtruderArbvp1(void) { return mDirArbvp1; }
00190         static const String& getDirectionalLightExtruderVs_1_1(void) { return mDirVs_1_1; }
00191 
00193         static const String& getPointLightExtruderArbvp1Debug(void) { return mPointArbvp1Debug; }
00195         static const String& getPointLightExtruderVs_1_1Debug(void) { return mPointVs_1_1Debug; }
00197         static const String& getDirectionalLightExtruderArbvp1Debug(void) { return mDirArbvp1Debug; }
00199         static const String& getDirectionalLightExtruderVs_1_1Debug(void) { return mDirVs_1_1Debug; }
00201         static const String& getProgramSource(Light::LightTypes lightType, const String syntax, 
00202             bool finite, bool debug);
00203 
00204         static const String& getProgramName(Light::LightTypes lightType, bool finite, bool debug);
00205 
00206 
00207 
00208 
00209 
00211         static const String& getPointLightExtruderArbvp1Finite(void) { return mPointArbvp1Finite; }
00213         static const String& getPointLightExtruderVs_1_1Finite(void) { return mPointVs_1_1Finite; }
00215         static const String& getDirectionalLightExtruderArbvp1Finite(void) { return mDirArbvp1Finite; }
00217         static const String& getDirectionalLightExtruderVs_1_1Finite(void) { return mDirVs_1_1Finite; }
00218 
00220         static const String& getPointLightExtruderArbvp1FiniteDebug(void) { return mPointArbvp1FiniteDebug; }
00222         static const String& getPointLightExtruderVs_1_1FiniteDebug(void) { return mPointVs_1_1FiniteDebug; }
00224         static const String& getDirectionalLightExtruderArbvp1FiniteDebug(void) { return mDirArbvp1FiniteDebug; }
00226         static const String& getDirectionalLightExtruderVs_1_1FiniteDebug(void) { return mDirVs_1_1FiniteDebug; }
00227 
00228 
00229 
00230         
00231     };
00232 }
00233 #endif

Copyright © 2008 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sun Sep 27 22:02:26 2009