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

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Mon Jul 27 2020 13:40:44