# 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
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sat Apr 11 13:46:43 2009