# 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-2005 The OGRE Team
    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 */
    00025
    00026 #ifndef __SHADOWVOLUMEEXTRUDEPROGRAM_H__
    00027 #define __SHADOWVOLUMEEXTRUDEPROGRAM_H__
    00028
    00029 #include "OgrePrerequisites.h"
    00030 #include "OgreLight.h"
    00031
    00032 namespace Ogre {
    00126     class _OgreExport ShadowVolumeExtrudeProgram
    00127     {
    00128     private:
    00129         static String mPointArbvp1;
    00130         static String mPointVs_1_1;
    00131         static String mDirArbvp1;
    00132         static String mDirVs_1_1;
    00133         // same as above, except the color is set to 1 to enable debug volumes to be seen
    00134         static String mPointArbvp1Debug;
    00135         static String mPointVs_1_1Debug;
    00136         static String mDirArbvp1Debug;
    00137         static String mDirVs_1_1Debug;
    00138
    00139         static String mPointArbvp1Finite;
    00140         static String mPointVs_1_1Finite;
    00141         static String mDirArbvp1Finite;
    00142         static String mDirVs_1_1Finite;
    00143         // same as above, except the color is set to 1 to enable debug volumes to be seen
    00144         static String mPointArbvp1FiniteDebug;
    00145         static String mPointVs_1_1FiniteDebug;
    00146         static String mDirArbvp1FiniteDebug;
    00147         static String mDirVs_1_1FiniteDebug;
    00148
    00149         static bool mInitialised;
    00150
    00151     public:
    00152 #define OGRE_NUM_SHADOW_EXTRUDER_PROGRAMS 8
    00153         enum Programs
    00154         {
    00155             // Point light extruder, infinite distance
    00156             POINT_LIGHT = 0,
    00157             // Point light extruder, infinite distance, debug mode
    00158             POINT_LIGHT_DEBUG = 1,
    00159             // Directional light extruder, infinite distance
    00160             DIRECTIONAL_LIGHT = 2,
    00161             // Directional light extruder, infinite distance, debug mode
    00162             DIRECTIONAL_LIGHT_DEBUG = 3,
    00163             // Point light extruder, finite distance
    00164             POINT_LIGHT_FINITE = 4,
    00165             // Point light extruder, finite distance, debug mode
    00166             POINT_LIGHT_FINITE_DEBUG = 5,
    00167             // Directional light extruder, finite distance
    00168             DIRECTIONAL_LIGHT_FINITE = 6,
    00169             // Directional light extruder, finite distance, debug mode
    00170             DIRECTIONAL_LIGHT_FINITE_DEBUG = 7
    00171
    00172         };
    00173         static const String programNames[OGRE_NUM_SHADOW_EXTRUDER_PROGRAMS];
    00174
    00176         static void initialise(void);
    00178         static void shutdown(void);
    00180         static const String& getPointLightExtruderArbvp1(void) { return mPointArbvp1; }
    00182         static const String& getPointLightExtruderVs_1_1(void) { return mPointVs_1_1; }
    00184         static const String& getDirectionalLightExtruderArbvp1(void) { return mDirArbvp1; }
    00186         static const String& getDirectionalLightExtruderVs_1_1(void) { return mDirVs_1_1; }
    00187
    00189         static const String& getPointLightExtruderArbvp1Debug(void) { return mPointArbvp1Debug; }
    00191         static const String& getPointLightExtruderVs_1_1Debug(void) { return mPointVs_1_1Debug; }
    00193         static const String& getDirectionalLightExtruderArbvp1Debug(void) { return mDirArbvp1Debug; }
    00195         static const String& getDirectionalLightExtruderVs_1_1Debug(void) { return mDirVs_1_1Debug; }
    00197         static const String& getProgramSource(Light::LightTypes lightType, const String syntax,
    00198             bool finite, bool debug);
    00199
    00200         static const String& getProgramName(Light::LightTypes lightType, bool finite, bool debug);
    00201
    00202
    00203
    00204
    00205
    00207         static const String& getPointLightExtruderArbvp1Finite(void) { return mPointArbvp1Finite; }
    00209         static const String& getPointLightExtruderVs_1_1Finite(void) { return mPointVs_1_1Finite; }
    00211         static const String& getDirectionalLightExtruderArbvp1Finite(void) { return mDirArbvp1Finite; }
    00213         static const String& getDirectionalLightExtruderVs_1_1Finite(void) { return mDirVs_1_1Finite; }
    00214
    00216         static const String& getPointLightExtruderArbvp1FiniteDebug(void) { return mPointArbvp1FiniteDebug; }
    00218         static const String& getPointLightExtruderVs_1_1FiniteDebug(void) { return mPointVs_1_1FiniteDebug; }
    00220         static const String& getDirectionalLightExtruderArbvp1FiniteDebug(void) { return mDirArbvp1FiniteDebug; }
    00222         static const String& getDirectionalLightExtruderVs_1_1FiniteDebug(void) { return mDirVs_1_1FiniteDebug; }
    00223
    00224
    00225
    00226
    00227     };
    00228 }
    00229 #endif

Copyright © 2000-2005 by The OGRE Team
Last modified Sun Nov 20 12:36:07 2005