OgrePass.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-2013 Torus Knot Software Ltd
00008 
00009 Permission is hereby granted, free of charge, to any person obtaining a copy
00010 of this software and associated documentation files (the "Software"), to deal
00011 in the Software without restriction, including without limitation the rights
00012 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00013 copies of the Software, and to permit persons to whom the Software is
00014 furnished to do so, subject to the following conditions:
00015 
00016 The above copyright notice and this permission notice shall be included in
00017 all copies or substantial portions of the Software.
00018 
00019 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00020 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00021 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
00022 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00023 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00024 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
00025 THE SOFTWARE.
00026 -----------------------------------------------------------------------------
00027 */
00028 #ifndef __Pass_H__
00029 #define __Pass_H__
00030 
00031 #include "OgrePrerequisites.h"
00032 #include "OgreGpuProgram.h"
00033 #include "OgreColourValue.h"
00034 #include "OgreBlendMode.h"
00035 #include "OgreCommon.h"
00036 #include "OgreLight.h"
00037 #include "OgreTextureUnitState.h"
00038 #include "OgreUserObjectBindings.h"
00039 
00040 namespace Ogre {
00041 
00048 
00049     enum IlluminationStage
00050     {
00052         IS_AMBIENT,
00054         IS_PER_LIGHT,
00056         IS_DECAL, 
00058         IS_UNKNOWN
00059     };
00060 
00080     class _OgreExport Pass : public PassAlloc
00081     {
00082     public:
00093         struct HashFunc
00094         {
00095             virtual uint32 operator()(const Pass* p) const = 0;
00097             virtual ~HashFunc() {}
00098         };
00099     protected:
00100         Technique* mParent;
00101         unsigned short mIndex; 
00102         String mName; 
00103         uint32 mHash; 
00104         bool mHashDirtyQueued; 
00105         //-------------------------------------------------------------------------
00106         // Colour properties, only applicable in fixed-function passes
00107         ColourValue mAmbient;
00108         ColourValue mDiffuse;
00109         ColourValue mSpecular;
00110         ColourValue mEmissive;
00111         Real mShininess;
00112         TrackVertexColourType mTracking;
00113         //-------------------------------------------------------------------------
00114 
00115         //-------------------------------------------------------------------------
00116         // Blending factors
00117         SceneBlendFactor mSourceBlendFactor;
00118         SceneBlendFactor mDestBlendFactor;
00119         SceneBlendFactor mSourceBlendFactorAlpha;
00120         SceneBlendFactor mDestBlendFactorAlpha;
00121 
00122         // Used to determine if separate alpha blending should be used for color and alpha channels
00123         bool mSeparateBlend;
00124 
00125         //-------------------------------------------------------------------------
00126         // Blending operations
00127         SceneBlendOperation mBlendOperation;
00128         SceneBlendOperation mAlphaBlendOperation;
00129 
00131         bool mSeparateBlendOperation;
00132 
00133         //-------------------------------------------------------------------------
00134 
00135         //-------------------------------------------------------------------------
00136         // Depth buffer settings
00137         bool mDepthCheck;
00138         bool mDepthWrite;
00139         CompareFunction mDepthFunc;
00140         float mDepthBiasConstant;
00141         float mDepthBiasSlopeScale;
00142         float mDepthBiasPerIteration;
00143 
00145         bool mColourWrite;
00146 
00147         // Alpha reject settings
00148         CompareFunction mAlphaRejectFunc;
00149         unsigned char mAlphaRejectVal;
00150         bool mAlphaToCoverageEnabled;
00151 
00153         bool mTransparentSorting;
00155         bool mTransparentSortingForced;
00156         //-------------------------------------------------------------------------
00157 
00158         //-------------------------------------------------------------------------
00159         // Culling mode
00160         CullingMode mCullMode;
00161         ManualCullingMode mManualCullMode;
00162         //-------------------------------------------------------------------------
00163 
00165         bool mLightingEnabled;
00167         unsigned short mMaxSimultaneousLights;
00169         unsigned short mStartLight;
00171         bool mIteratePerLight;
00173         unsigned short mLightsPerIteration;
00175         bool mRunOnlyForOneLightType;
00176         Light::LightTypes mOnlyLightType;
00178         uint32 mLightMask;
00179 
00181         ShadeOptions mShadeOptions;
00183         PolygonMode mPolygonMode;
00185         bool mNormaliseNormals;
00186         bool mPolygonModeOverrideable;
00187         //-------------------------------------------------------------------------
00188         // Fog
00189         bool mFogOverride;
00190         FogMode mFogMode;
00191         ColourValue mFogColour;
00192         Real mFogStart;
00193         Real mFogEnd;
00194         Real mFogDensity;
00195         //-------------------------------------------------------------------------
00196 
00198         typedef vector<TextureUnitState*>::type TextureUnitStates;
00199         TextureUnitStates mTextureUnitStates;
00200 
00202         GpuProgramUsage *mVertexProgramUsage;
00204         GpuProgramUsage *mShadowCasterVertexProgramUsage;
00206         GpuProgramUsage *mShadowCasterFragmentProgramUsage;
00208         GpuProgramUsage *mShadowReceiverVertexProgramUsage;
00210         GpuProgramUsage *mFragmentProgramUsage;
00212         GpuProgramUsage *mShadowReceiverFragmentProgramUsage;
00214         GpuProgramUsage *mGeometryProgramUsage;
00216         GpuProgramUsage *mTesselationHullProgramUsage;
00218         GpuProgramUsage *mTesselationDomainProgramUsage;
00220         GpuProgramUsage *mComputeProgramUsage;
00222         bool mQueuedForDeletion;
00224         size_t mPassIterationCount;
00226         Real mPointSize;
00227         Real mPointMinSize;
00228         Real mPointMaxSize;
00229         bool mPointSpritesEnabled;
00230         bool mPointAttenuationEnabled;
00232         Real mPointAttenuationCoeffs[3];
00233         // TU Content type lookups
00234         typedef vector<unsigned short>::type ContentTypeLookup;
00235         mutable ContentTypeLookup mShadowContentTypeLookup;
00236         mutable bool mContentTypeLookupBuilt;
00238         bool mLightScissoring;
00240         bool mLightClipPlanes;
00242         IlluminationStage mIlluminationStage;
00244         UserObjectBindings  mUserObjectBindings;
00245         
00246 
00248         void _getBlendFlags(SceneBlendType type, SceneBlendFactor& source, SceneBlendFactor& dest);
00249 
00250     public:
00251         typedef set<Pass*>::type PassSet;
00252     protected:
00254         static PassSet msDirtyHashList;
00256         static PassSet msPassGraveyard;
00258         static HashFunc* msHashFunc;
00259     public:
00260         OGRE_STATIC_MUTEX(msDirtyHashListMutex);
00261         OGRE_STATIC_MUTEX(msPassGraveyardMutex);
00262         OGRE_MUTEX(mTexUnitChangeMutex);
00263         OGRE_MUTEX(mGpuProgramChangeMutex);
00265         Pass(Technique* parent, unsigned short index);
00267         Pass(Technique* parent, unsigned short index, const Pass& oth );
00269         Pass& operator=(const Pass& oth);
00270         virtual ~Pass();
00271 
00273         bool isProgrammable(void) const { return mVertexProgramUsage || mFragmentProgramUsage || mGeometryProgramUsage ||
00274                                                  mTesselationHullProgramUsage || mTesselationDomainProgramUsage || mComputeProgramUsage; }
00275         
00277         bool hasVertexProgram(void) const { return mVertexProgramUsage != NULL; }
00279         bool hasFragmentProgram(void) const { return mFragmentProgramUsage != NULL; }
00281         bool hasGeometryProgram(void) const { return mGeometryProgramUsage != NULL; }
00283         bool hasTesselationHullProgram(void) const { return mTesselationHullProgramUsage != NULL; }
00285         bool hasTesselationDomainProgram(void) const { return mTesselationDomainProgramUsage != NULL; }
00287         bool hasComputeProgram(void) const { return mComputeProgramUsage != NULL; }
00289         bool hasShadowCasterVertexProgram(void) const { return mShadowCasterVertexProgramUsage != NULL; }
00291         bool hasShadowCasterFragmentProgram(void) const { return mShadowCasterFragmentProgramUsage != NULL; }
00293         bool hasShadowReceiverVertexProgram(void) const { return mShadowReceiverVertexProgramUsage != NULL; }
00295         bool hasShadowReceiverFragmentProgram(void) const { return mShadowReceiverFragmentProgramUsage != NULL; }
00296 
00297         size_t calculateSize(void) const;
00298 
00300         unsigned short getIndex(void) const { return mIndex; }
00301         /* Set the name of the pass
00302         @remarks
00303         The name of the pass is optional.  Its useful in material scripts where a material could inherit
00304         from another material and only want to modify a particular pass.
00305         */
00306         void setName(const String& name);
00308         const String& getName(void) const { return mName; }
00309 
00321         void setAmbient(Real red, Real green, Real blue);
00322 
00335         void setAmbient(const ColourValue& ambient);
00336 
00347         void setDiffuse(Real red, Real green, Real blue, Real alpha);
00348 
00359         void setDiffuse(const ColourValue& diffuse);
00360 
00373         void setSpecular(Real red, Real green, Real blue, Real alpha);
00374 
00387         void setSpecular(const ColourValue& specular);
00388 
00394         void setShininess(Real val);
00395 
00405         void setSelfIllumination(Real red, Real green, Real blue);
00406 
00411         void setEmissive(Real red, Real green, Real blue)
00412         {
00413             setSelfIllumination(red, green, blue);
00414         }
00415 
00425         void setSelfIllumination(const ColourValue& selfIllum);
00426 
00431         void setEmissive(const ColourValue& emissive)
00432         {
00433             setSelfIllumination(emissive);
00434         }
00435 
00438         void setVertexColourTracking(TrackVertexColourType tracking);
00439 
00445         Real getPointSize(void) const;
00446 
00462         void setPointSize(Real ps);
00463 
00469         void setPointSpritesEnabled(bool enabled);
00470 
00474         bool getPointSpritesEnabled(void) const;
00475 
00493         void setPointAttenuation(bool enabled,
00494             Real constant = 0.0f, Real linear = 1.0f, Real quadratic = 0.0f);
00495 
00497         bool isPointAttenuationEnabled(void) const;
00498 
00500         Real getPointAttenuationConstant(void) const;
00502         Real getPointAttenuationLinear(void) const;
00504         Real getPointAttenuationQuadratic(void) const;
00505 
00507         void setPointMinSize(Real min);
00509         Real getPointMinSize(void) const;
00513         void setPointMaxSize(Real max);
00517         Real getPointMaxSize(void) const;
00518 
00521         const ColourValue& getAmbient(void) const;
00522 
00525         const ColourValue& getDiffuse(void) const;
00526 
00529         const ColourValue& getSpecular(void) const;
00530 
00533         const ColourValue& getSelfIllumination(void) const;
00534 
00539         const ColourValue& getEmissive(void) const
00540         {
00541             return getSelfIllumination();
00542         }
00543 
00546         Real getShininess(void) const;
00547 
00550         TrackVertexColourType getVertexColourTracking(void) const;
00551 
00556         TextureUnitState* createTextureUnitState(void);
00567         TextureUnitState* createTextureUnitState( const String& textureName, unsigned short texCoordSet = 0);
00573         void addTextureUnitState(TextureUnitState* state);
00576         TextureUnitState* getTextureUnitState(unsigned short index);
00580         TextureUnitState* getTextureUnitState(const String& name);
00583         const TextureUnitState* getTextureUnitState(unsigned short index) const;
00587         const TextureUnitState* getTextureUnitState(const String& name) const;
00588 
00595         unsigned short getTextureUnitStateIndex(const TextureUnitState* state) const;
00596 
00597         typedef VectorIterator<TextureUnitStates> TextureUnitStateIterator;
00599         TextureUnitStateIterator getTextureUnitStateIterator(void);
00600 
00601         typedef ConstVectorIterator<TextureUnitStates> ConstTextureUnitStateIterator;
00603         ConstTextureUnitStateIterator getTextureUnitStateIterator(void) const;
00604 
00609         void removeTextureUnitState(unsigned short index);
00610 
00613         void removeAllTextureUnitStates(void);
00614 
00617         unsigned short getNumTextureUnitStates(void) const
00618         {
00619             return static_cast<unsigned short>(mTextureUnitStates.size());
00620         }
00621 
00638         void setSceneBlending( const SceneBlendType sbt );
00639 
00658         void setSeparateSceneBlending( const SceneBlendType sbt, const SceneBlendType sbta );
00659 
00682         void setSceneBlending( const SceneBlendFactor sourceFactor, const SceneBlendFactor destFactor);
00683 
00710         void setSeparateSceneBlending( const SceneBlendFactor sourceFactor, const SceneBlendFactor destFactor, const SceneBlendFactor sourceFactorAlpha, const SceneBlendFactor destFactorAlpha );
00711 
00713         bool hasSeparateSceneBlending() const;
00714 
00717         SceneBlendFactor getSourceBlendFactor() const;
00718 
00721         SceneBlendFactor getDestBlendFactor() const;
00722 
00725         SceneBlendFactor getSourceBlendFactorAlpha() const;
00726 
00729         SceneBlendFactor getDestBlendFactorAlpha() const;
00730 
00741         void setSceneBlendingOperation(SceneBlendOperation op);
00742 
00756         void setSeparateSceneBlendingOperation(SceneBlendOperation op, SceneBlendOperation alphaOp);
00757 
00759         bool hasSeparateSceneBlendingOperations() const;
00760 
00762         SceneBlendOperation getSceneBlendingOperation() const;
00763 
00765         SceneBlendOperation getSceneBlendingOperationAlpha() const;
00766 
00768         bool isTransparent(void) const;
00769 
00781         void setDepthCheckEnabled(bool enabled);
00782 
00787         bool getDepthCheckEnabled(void) const;
00788 
00799         void setDepthWriteEnabled(bool enabled);
00800 
00805         bool getDepthWriteEnabled(void) const;
00806 
00814         void setDepthFunction( CompareFunction func );
00819         CompareFunction getDepthFunction(void) const;
00820 
00831         void setColourWriteEnabled(bool enabled);
00833         bool getColourWriteEnabled(void) const;
00834 
00848         void setCullingMode( CullingMode mode );
00849 
00852         CullingMode getCullingMode(void) const;
00853 
00867         void setManualCullingMode( ManualCullingMode mode );
00868 
00873         ManualCullingMode getManualCullingMode(void) const;
00874 
00883         void setLightingEnabled(bool enabled);
00884 
00887         bool getLightingEnabled(void) const;
00888 
00897         void setMaxSimultaneousLights(unsigned short maxLights);
00899         unsigned short getMaxSimultaneousLights(void) const;
00900 
00911         void setStartLight(unsigned short startLight);
00913         unsigned short getStartLight(void) const;
00914 
00916         void setLightMask(uint32 mask);
00918         uint32 getLightMask() const;
00919 
00924         void setShadingMode( ShadeOptions mode );
00925 
00928         ShadeOptions getShadingMode(void) const;
00929 
00934         void setPolygonMode( PolygonMode mode );
00935 
00938         PolygonMode getPolygonMode(void) const;
00939 
00945         virtual void setPolygonModeOverrideable(bool override)
00946         {
00947             mPolygonModeOverrideable = override;
00948         }
00949 
00953         virtual bool getPolygonModeOverrideable(void) const
00954         {
00955             return mPolygonModeOverrideable;
00956         }
00986         void setFog(
00987             bool overrideScene,
00988             FogMode mode = FOG_NONE,
00989             const ColourValue& colour = ColourValue::White,
00990             Real expDensity = 0.001, Real linearStart = 0.0, Real linearEnd = 1.0 );
00991 
00994         bool getFogOverride(void) const;
00995 
01000         FogMode getFogMode(void) const;
01001 
01004         const ColourValue& getFogColour(void) const;
01005 
01010         Real getFogStart(void) const;
01011 
01016         Real getFogEnd(void) const;
01017 
01022         Real getFogDensity(void) const;
01023 
01043         void setDepthBias(float constantBias, float slopeScaleBias = 0.0f);
01044 
01046         float getDepthBiasConstant(void) const;
01048         float getDepthBiasSlopeScale(void) const;
01055         void setIterationDepthBias(float biasPerIteration);
01059         float getIterationDepthBias() const;
01060 
01070         void setAlphaRejectSettings(CompareFunction func, unsigned char value, bool alphaToCoverageEnabled = false);
01071 
01074         void setAlphaRejectFunction(CompareFunction func);
01075 
01078         void setAlphaRejectValue(unsigned char val);
01079 
01082         CompareFunction getAlphaRejectFunction(void) const { return mAlphaRejectFunc; }
01083 
01086         unsigned char getAlphaRejectValue(void) const { return mAlphaRejectVal; }
01087 
01095         void setAlphaToCoverageEnabled(bool enabled);
01096 
01099         bool isAlphaToCoverageEnabled() const { return mAlphaToCoverageEnabled; }
01100 
01113         void setTransparentSortingEnabled(bool enabled);
01114 
01117         bool getTransparentSortingEnabled(void) const;
01118 
01128         void setTransparentSortingForced(bool enabled);
01129 
01132         bool getTransparentSortingForced(void) const;
01133 
01176         void setIteratePerLight(bool enabled,
01177             bool onlyForOneLightType = true, Light::LightTypes lightType = Light::LT_POINT);
01178 
01180         bool getIteratePerLight(void) const { return mIteratePerLight; }
01182         bool getRunOnlyForOneLightType(void) const { return mRunOnlyForOneLightType; }
01185         Light::LightTypes getOnlyLightType() const { return mOnlyLightType; }
01186 
01196         void setLightCountPerIteration(unsigned short c);
01200         unsigned short getLightCountPerIteration(void) const;
01201         
01203         Technique* getParent(void) const { return mParent; }
01204 
01206         const String& getResourceGroup(void) const;
01207 
01224         void setVertexProgram(const String& name, bool resetParams = true);
01231         void setVertexProgramParameters(GpuProgramParametersSharedPtr params);
01233         const String& getVertexProgramName(void) const;
01235         GpuProgramParametersSharedPtr getVertexProgramParameters(void) const;
01237         const GpuProgramPtr& getVertexProgram(void) const;
01238 
01239 
01269         void setShadowCasterVertexProgram(const String& name);
01276         void setShadowCasterVertexProgramParameters(GpuProgramParametersSharedPtr params);
01278         const String& getShadowCasterVertexProgramName(void) const;
01280         GpuProgramParametersSharedPtr getShadowCasterVertexProgramParameters(void) const;
01283         const GpuProgramPtr& getShadowCasterVertexProgram(void) const;
01284 
01314         void setShadowCasterFragmentProgram(const String& name);
01321         void setShadowCasterFragmentProgramParameters(GpuProgramParametersSharedPtr params);
01323         const String& getShadowCasterFragmentProgramName(void) const;
01325         GpuProgramParametersSharedPtr getShadowCasterFragmentProgramParameters(void) const;
01328         const GpuProgramPtr& getShadowCasterFragmentProgram(void) const;
01329 
01355         void setShadowReceiverVertexProgram(const String& name);
01362         void setShadowReceiverVertexProgramParameters(GpuProgramParametersSharedPtr params);
01363 
01384         void setShadowReceiverFragmentProgram(const String& name);
01391         void setShadowReceiverFragmentProgramParameters(GpuProgramParametersSharedPtr params);
01392 
01394         const String& getShadowReceiverVertexProgramName(void) const;
01396         GpuProgramParametersSharedPtr getShadowReceiverVertexProgramParameters(void) const;
01399         const GpuProgramPtr& getShadowReceiverVertexProgram(void) const;
01400 
01402         const String& getShadowReceiverFragmentProgramName(void) const;
01404         GpuProgramParametersSharedPtr getShadowReceiverFragmentProgramParameters(void) const;
01407         const GpuProgramPtr& getShadowReceiverFragmentProgram(void) const;
01408 
01425         void setFragmentProgram(const String& name, bool resetParams = true);
01430         void setFragmentProgramParameters(GpuProgramParametersSharedPtr params);
01432         const String& getFragmentProgramName(void) const;
01434         GpuProgramParametersSharedPtr getFragmentProgramParameters(void) const;
01436         const GpuProgramPtr& getFragmentProgram(void) const;
01437 
01454         void setGeometryProgram(const String& name, bool resetParams = true);
01459         void setGeometryProgramParameters(GpuProgramParametersSharedPtr params);
01461         const String& getGeometryProgramName(void) const;
01463         GpuProgramParametersSharedPtr getGeometryProgramParameters(void) const;
01465         const GpuProgramPtr& getGeometryProgram(void) const;
01466 
01478         Pass* _split(unsigned short numUnits);
01479 
01481         void _notifyIndex(unsigned short index);
01482 
01484         void _prepare(void);
01486         void _unprepare(void);
01488         void _load(void);
01490         void _unload(void);
01492         bool isLoaded(void) const;
01493 
01500         uint32 getHash(void) const { return mHash; }
01502         void _dirtyHash(void);
01509         void _recalculateHash(void);
01511         void _notifyNeedsRecompile(void);
01512 
01517         void _updateAutoParams(const AutoParamDataSource* source, uint16 variabilityMask) const;
01518 
01525         unsigned short _getTextureUnitWithContentTypeIndex(
01526             TextureUnitState::ContentType contentType, unsigned short index) const;
01527 
01536         void setTextureFiltering(TextureFilterOptions filterType);
01545         void setTextureAnisotropy(unsigned int maxAniso);
01557         void setNormaliseNormals(bool normalise) { mNormaliseNormals = normalise; }
01558 
01560         bool getNormaliseNormals(void) const {return mNormaliseNormals; }
01561 
01565         static const PassSet& getDirtyHashList(void)
01566         { return msDirtyHashList; }
01569         static const PassSet& getPassGraveyard(void)
01570         { return msPassGraveyard; }
01578         static void clearDirtyHashList(void);
01579 
01581         static void processPendingPassUpdates(void);
01582 
01584         void queueForDeletion(void);
01585 
01588         bool isAmbientOnly(void) const;
01589 
01603         void setPassIterationCount(const size_t count) { mPassIterationCount = count; }
01604 
01607         size_t getPassIterationCount(void) const { return mPassIterationCount; }
01608 
01620         bool applyTextureAliases(const AliasTextureNamePairList& aliasList, const bool apply = true) const;
01621 
01642         void setLightScissoringEnabled(bool enabled) { mLightScissoring = enabled; }
01646         bool getLightScissoringEnabled() const { return mLightScissoring; }
01647 
01671         void setLightClipPlanesEnabled(bool enabled) { mLightClipPlanes = enabled; }
01675         bool getLightClipPlanesEnabled() const { return mLightClipPlanes; }
01676 
01698         void setIlluminationStage(IlluminationStage is) { mIlluminationStage = is; }
01700         IlluminationStage getIlluminationStage() const { return mIlluminationStage; }
01704         enum BuiltinHashFunction
01705         {
01707             MIN_TEXTURE_CHANGE,
01712             MIN_GPU_PROGRAM_CHANGE
01713         };
01726         static void setHashFunction(BuiltinHashFunction builtin);
01727 
01739         static void setHashFunction(HashFunc* hashFunc) { msHashFunc = hashFunc; }
01740 
01743         static HashFunc* getHashFunction(void) { return msHashFunc; }
01744 
01747         static HashFunc* getBuiltinHashFunction(BuiltinHashFunction builtin);
01748 
01753         UserObjectBindings& getUserObjectBindings() { return mUserObjectBindings; }
01754 
01759         const UserObjectBindings& getUserObjectBindings() const { return mUserObjectBindings; }
01760 
01762 
01778         void setTesselationHullProgram(const String& name, bool resetParams = true);
01783         void setTesselationHullProgramParameters(GpuProgramParametersSharedPtr params);
01785         const String& getTesselationHullProgramName(void) const;
01787         GpuProgramParametersSharedPtr getTesselationHullProgramParameters(void) const;
01789         const GpuProgramPtr& getTesselationHullProgram(void) const;
01790 
01807         void setTesselationDomainProgram(const String& name, bool resetParams = true);
01812         void setTesselationDomainProgramParameters(GpuProgramParametersSharedPtr params);
01814         const String& getTesselationDomainProgramName(void) const;
01816         GpuProgramParametersSharedPtr getTesselationDomainProgramParameters(void) const;
01818         const GpuProgramPtr& getTesselationDomainProgram(void) const;
01819 
01836         void setComputeProgram(const String& name, bool resetParams = true);
01841         void setComputeProgramParameters(GpuProgramParametersSharedPtr params);
01843         const String& getComputeProgramName(void) const;
01845         GpuProgramParametersSharedPtr getComputeProgramParameters(void) const;
01847         const GpuProgramPtr& getComputeProgram(void) const;
01848     };
01849 
01859     struct IlluminationPass : public PassAlloc
01860     {
01861         IlluminationStage stage;
01863         Pass* pass;
01865         bool destroyOnShutdown;
01867         Pass* originalPass;
01868 
01869         IlluminationPass() {}
01870     };
01871 
01872     typedef vector<IlluminationPass*>::type IlluminationPassList;
01873 
01877 }
01878 
01879 #endif

Copyright © 2012 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Mon Jul 27 2020 13:40:44