Просмотр исходного кода

Seriously scaled down TextureUnitState

Marko Pintera 13 лет назад
Родитель
Сommit
20ff80ca27

+ 1 - 71
CamelotRenderer/OgreRenderSystem.cpp

@@ -281,12 +281,11 @@ namespace Ogre {
         return mActiveViewport;
     }
     //-----------------------------------------------------------------------
-    void RenderSystem::_setTextureUnitSettings(size_t texUnit, TextureUnitState& tl)
+    void RenderSystem::_setTextureUnitSettings(size_t texUnit, const TexturePtr& tex, TextureUnitState& tl)
     {
         // This method is only ever called to set a texture unit to valid details
         // The method _disableTextureUnit is called to turn a unit off
 
-        const TexturePtr& tex = tl._getTexturePtr();
 		// Vertex texture binding?
 		if (mCurrentCapabilities->hasCapability(RSC_VERTEX_TEXTURE_FETCH) &&
 			!mCurrentCapabilities->getVertexTextureUnitsShared())
@@ -313,9 +312,6 @@ namespace Ogre {
 			_setTexture(texUnit, true, tex);
 		}
 
-        // Set texture coordinate set
-        _setTextureCoordSet(texUnit, tl.getTextureCoordSet());
-
         // Set texture layer filtering
         _setTextureUnitFiltering(texUnit, 
             tl.getTextureFiltering(FT_MIN), 
@@ -328,75 +324,9 @@ namespace Ogre {
 		// Set mipmap biasing
 		_setTextureMipmapBias(texUnit, tl.getTextureMipmapBias());
 
-		// Set blend modes
-		// Note, colour before alpha is important
-        _setTextureBlendMode(texUnit, tl.getColourBlendMode());
-        _setTextureBlendMode(texUnit, tl.getAlphaBlendMode());
-
         // Texture addressing mode
         const TextureUnitState::UVWAddressingMode& uvw = tl.getTextureAddressingMode();
         _setTextureAddressingMode(texUnit, uvw);
-        // Set texture border colour only if required
-        if (uvw.u == TextureUnitState::TAM_BORDER ||
-            uvw.v == TextureUnitState::TAM_BORDER ||
-            uvw.w == TextureUnitState::TAM_BORDER)
-        {
-            _setTextureBorderColour(texUnit, tl.getTextureBorderColour());
-        }
-
-        // Set texture effects
-        TextureUnitState::EffectMap::iterator effi;
-        // Iterate over new effects
-        bool anyCalcs = false;
-        for (effi = tl.mEffects.begin(); effi != tl.mEffects.end(); ++effi)
-        {
-            switch (effi->second.type)
-            {
-            case TextureUnitState::ET_ENVIRONMENT_MAP:
-                if (effi->second.subtype == TextureUnitState::ENV_CURVED)
-                {
-                    _setTextureCoordCalculation(texUnit, TEXCALC_ENVIRONMENT_MAP);
-                    anyCalcs = true;
-                }
-                else if (effi->second.subtype == TextureUnitState::ENV_PLANAR)
-                {
-                    _setTextureCoordCalculation(texUnit, TEXCALC_ENVIRONMENT_MAP_PLANAR);
-                    anyCalcs = true;
-                }
-                else if (effi->second.subtype == TextureUnitState::ENV_REFLECTION)
-                {
-                    _setTextureCoordCalculation(texUnit, TEXCALC_ENVIRONMENT_MAP_REFLECTION);
-                    anyCalcs = true;
-                }
-                else if (effi->second.subtype == TextureUnitState::ENV_NORMAL)
-                {
-                    _setTextureCoordCalculation(texUnit, TEXCALC_ENVIRONMENT_MAP_NORMAL);
-                    anyCalcs = true;
-                }
-                break;
-            case TextureUnitState::ET_UVSCROLL:
-			case TextureUnitState::ET_USCROLL:
-			case TextureUnitState::ET_VSCROLL:
-            case TextureUnitState::ET_ROTATE:
-            case TextureUnitState::ET_TRANSFORM:
-                break;
-            case TextureUnitState::ET_PROJECTIVE_TEXTURE:
-                _setTextureCoordCalculation(texUnit, TEXCALC_PROJECTIVE_TEXTURE, 
-                    effi->second.frustum);
-                anyCalcs = true;
-                break;
-            }
-        }
-        // Ensure any previous texcoord calc settings are reset if there are now none
-        if (!anyCalcs)
-        {
-            _setTextureCoordCalculation(texUnit, TEXCALC_NONE);
-        }
-
-        // Change tetxure matrix 
-        _setTextureMatrix(texUnit, tl.getTextureTransform());
-
-
     }
 	//-----------------------------------------------------------------------
 	void RenderSystem::_setVertexTexture(size_t unit, const TexturePtr& tex)

+ 1 - 1
CamelotRenderer/OgreRenderSystem.h

@@ -545,7 +545,7 @@ namespace Ogre
 		only sets those settings which are different from the current settings for this
 		unit, thus minimising render state changes.
 		*/
-		virtual void _setTextureUnitSettings(size_t texUnit, TextureUnitState& tl);
+		virtual void _setTextureUnitSettings(size_t texUnit, const TexturePtr& texture, TextureUnitState& tl);
 		/** Turns off a texture unit. */
 		virtual void _disableTextureUnit(size_t texUnit);
 		/** Disables all texture units from the given unit upwards */

+ 6 - 830
CamelotRenderer/OgreTextureUnitState.cpp

@@ -31,25 +31,12 @@ THE SOFTWARE.
 namespace Ogre {
 
     //-----------------------------------------------------------------------
-    TextureUnitState::TextureUnitState(Pass* parent)
-        : mCurrentFrame(0)
-		, mAnimDuration(0)
-		, mCubic(false)
-		, mTextureType(TEX_TYPE_2D)
+    TextureUnitState::TextureUnitState(TextureType type)
+		: mTextureType(type)
         , mDesiredFormat(PF_UNKNOWN)
 		, mTextureSrcMipmaps(MIP_DEFAULT)
-		, mTextureCoordSetIndex(0)
-		, mBorderColour(ColourValue::Black)
-		, mTextureLoadFailed(false)
 		, mIsAlpha(false)
 		, mHwGamma(false)
-		, mRecalcTexMatrix(false)
-		, mUMod(0)
-		, mVMod(0)
-		, mUScale(1)
-		, mVScale(1)
-		, mRotate(0)
-		, mTexModMatrix(Matrix4::IDENTITY)
 		, mMinFilter(FO_LINEAR)
 		, mMagFilter(FO_LINEAR)
 		, mMipFilter(FO_POINT)
@@ -58,142 +45,25 @@ namespace Ogre {
 		, mIsDefaultAniso(true)
 		, mIsDefaultFiltering(true)
 		, mBindingType(BT_FRAGMENT)
-		, mContentType(CONTENT_NAMED)
-		, mParent(parent)
     {
-		mColourBlendMode.blendType = LBT_COLOUR;
-		mAlphaBlendMode.operation = LBX_MODULATE;
-		mAlphaBlendMode.blendType = LBT_ALPHA;
-		mAlphaBlendMode.source1 = LBS_TEXTURE;
-		mAlphaBlendMode.source2 = LBS_CURRENT;
-		setColourOperation(LBO_MODULATE);
 		setTextureAddressingMode(TAM_WRAP);
     }
 
     //-----------------------------------------------------------------------
-    TextureUnitState::TextureUnitState(Pass* parent, const TextureUnitState& oth )
+    TextureUnitState::TextureUnitState(const TextureUnitState& oth )
     {
-        mParent = parent;
         *this = oth;
     }
 
-    //-----------------------------------------------------------------------
-    TextureUnitState::TextureUnitState( Pass* parent, const String& texName, unsigned int texCoordSet)
-		: mCurrentFrame(0)
-		, mAnimDuration(0)
-		, mCubic(false)
-		, mTextureType(TEX_TYPE_2D)
-        , mDesiredFormat(PF_UNKNOWN)
-		, mTextureSrcMipmaps(MIP_DEFAULT)
-		, mTextureCoordSetIndex(0)
-		, mBorderColour(ColourValue::Black)
-		, mTextureLoadFailed(false)
-		, mIsAlpha(false)
-		, mHwGamma(false)
-		, mRecalcTexMatrix(false)
-		, mUMod(0)
-		, mVMod(0)
-		, mUScale(1)
-		, mVScale(1)
-		, mRotate(0)
-		, mTexModMatrix(Matrix4::IDENTITY)
-		, mMinFilter(FO_LINEAR)
-		, mMagFilter(FO_LINEAR)
-		, mMipFilter(FO_POINT)
-		, mMaxAniso(0)
-		, mMipmapBias(0)
-		, mIsDefaultAniso(true)
-		, mIsDefaultFiltering(true)
-		, mBindingType(BT_FRAGMENT)
-		, mContentType(CONTENT_NAMED)
-		, mParent(parent)
-    {
-		mColourBlendMode.blendType = LBT_COLOUR;
-		mAlphaBlendMode.operation = LBX_MODULATE;
-		mAlphaBlendMode.blendType = LBT_ALPHA;
-		mAlphaBlendMode.source1 = LBS_TEXTURE;
-		mAlphaBlendMode.source2 = LBS_CURRENT;
-		setColourOperation(LBO_MODULATE);
-		setTextureAddressingMode(TAM_WRAP);
-
-        setTextureName(texName);
-        setTextureCoordSet(texCoordSet);
-    }
     //-----------------------------------------------------------------------
     TextureUnitState::~TextureUnitState()
     {
-        // Unload ensure all controllers destroyed
-        _unload();
     }
     //-----------------------------------------------------------------------
     TextureUnitState & TextureUnitState::operator = ( 
         const TextureUnitState &oth )
     {
-        assert(mEffects.empty());
-
-        // copy basic members (int's, real's)
-        memcpy( this, &oth, (uchar *)(&oth.mFrames) - (uchar *)(&oth) );
-        // copy complex members
-        mFrames  = oth.mFrames;
-		mFramePtrs = oth.mFramePtrs;
-        mName    = oth.mName;
-        mEffects = oth.mEffects;
-
-        mTextureNameAlias = oth.mTextureNameAlias;
-		mCompositorRefName = oth.mCompositorRefName;
-		mCompositorRefTexName = oth.mCompositorRefTexName;
-
-        // Load immediately if Material loaded
-        if (isLoaded())
-        {
-            _load();
-        }
-
         return *this;
-    }
-    //-----------------------------------------------------------------------
-    const String& TextureUnitState::getTextureName(void) const
-    {
-        // Return name of current frame
-        if (mCurrentFrame < mFrames.size())
-            return mFrames[mCurrentFrame];
-        else
-            return StringUtil::BLANK;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setTextureName( const String& name, TextureType texType)
-    {
-		setContentType(CONTENT_NAMED);
-		mTextureLoadFailed = false;
-
-		if (texType == TEX_TYPE_CUBE_MAP)
-        {
-            // delegate to cubic texture implementation
-            setCubicTextureName(name, true);
-        }
-        else
-        {
-            mFrames.resize(1);
-			mFramePtrs.resize(1);
-            mFrames[0] = name;
-			mFramePtrs[0] = nullptr;
-			// defer load until used, so don't grab pointer yet
-            mCurrentFrame = 0;
-            mCubic = false;
-            mTextureType = texType;
-            if (name.empty())
-            {
-                return;
-            }
-
-            
-            // Load immediately ?
-            if (isLoaded())
-            {
-                _load(); // reload
-            }
-        }
-
     }
 	//-----------------------------------------------------------------------
 	void TextureUnitState::setBindingType(TextureUnitState::BindingType bt)
@@ -206,258 +76,21 @@ namespace Ogre {
 	{
 		return mBindingType;
 	}
-	//-----------------------------------------------------------------------
-	void TextureUnitState::setContentType(TextureUnitState::ContentType ct)
-	{
-		mContentType = ct;
-		if (ct == CONTENT_SHADOW || ct == CONTENT_COMPOSITOR)
-		{
-			// Clear out texture frames, not applicable
-			mFrames.clear();
-			// One reference space, set manually through _setTexturePtr
-			mFramePtrs.resize(1);
-			mFramePtrs[0] = nullptr;
-		}
-	}
-	//-----------------------------------------------------------------------
-	TextureUnitState::ContentType TextureUnitState::getContentType(void) const
-	{
-		return mContentType;
-	}
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setCubicTextureName( const String& name, bool forUVW)
-    {
-        if (forUVW)
-        {
-            setCubicTextureName(&name, forUVW);
-        }
-        else
-        {
-			setContentType(CONTENT_NAMED);
-			mTextureLoadFailed = false;
-            String ext;
-            String suffixes[6] = {"_fr", "_bk", "_lf", "_rt", "_up", "_dn"};
-            String baseName;
-            String fullNames[6];
-
-            size_t pos = name.find_last_of(".");
-			if( pos != String::npos )
-			{
-				baseName = name.substr(0, pos);
-				ext = name.substr(pos);
-			}
-			else
-				baseName = name;
-
-            for (int i = 0; i < 6; ++i)
-            {
-                fullNames[i] = baseName + suffixes[i] + ext;
-            }
-
-            setCubicTextureName(fullNames, forUVW);
-        }
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setCubicTextureName(const String* const names, bool forUVW)
-    {
-		setContentType(CONTENT_NAMED);
-		mTextureLoadFailed = false;
-        mFrames.resize(forUVW ? 1 : 6);
-		// resize pointers, but don't populate until asked for
-        mFramePtrs.resize(forUVW ? 1 : 6);
-		mAnimDuration = 0;
-        mCurrentFrame = 0;
-        mCubic = true;
-        mTextureType = forUVW ? TEX_TYPE_CUBE_MAP : TEX_TYPE_2D;
-
-        for (unsigned int i = 0; i < mFrames.size(); ++i)
-        {
-            mFrames[i] = names[i];
-			mFramePtrs[i] = nullptr;
-        }
-    }
     //-----------------------------------------------------------------------
     bool TextureUnitState::isCubic(void) const
     {
-        return mCubic;
+        return mTextureType == TEX_TYPE_CUBE_MAP;
     }
     //-----------------------------------------------------------------------
     bool TextureUnitState::is3D(void) const
     {
-        return mTextureType == TEX_TYPE_CUBE_MAP;
+        return mTextureType == TEX_TYPE_3D;
     }
     //-----------------------------------------------------------------------
     TextureType TextureUnitState::getTextureType(void) const
     {
         return mTextureType;
-
-    }
-
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setFrameTextureName(const String& name, unsigned int frameNumber)
-    {
-		mTextureLoadFailed = false;
-        if (frameNumber < mFrames.size())
-        {
-            mFrames[frameNumber] = name;
-			// reset pointer (don't populate until requested)
-			mFramePtrs[frameNumber] = nullptr;
-
-            if (isLoaded())
-            {
-                _load(); // reload
-            }
-        }
-        else // raise exception for frameNumber out of bounds
-        {
-            OGRE_EXCEPT(Exception::ERR_INVALIDPARAMS, "frameNumber paramter value exceeds number of stored frames.",
-                "TextureUnitState::setFrameTextureName");
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    void TextureUnitState::addFrameTextureName(const String& name)
-    {
-		setContentType(CONTENT_NAMED);
-		mTextureLoadFailed = false;
-
-        mFrames.push_back(name);
-		// Add blank pointer, load on demand
-		mFramePtrs.push_back(TexturePtr());
-
-        // Load immediately if Material loaded
-        if (isLoaded())
-        {
-            _load();
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    void TextureUnitState::deleteFrameTextureName(const size_t frameNumber)
-    {
-		mTextureLoadFailed = false;
-        if (frameNumber < mFrames.size())
-        {
-            mFrames.erase(mFrames.begin() + frameNumber);
-            mFramePtrs.erase(mFramePtrs.begin() + frameNumber);
-
-            if (isLoaded())
-            {
-                _load();
-            }
-        }
-        else
-        {
-            OGRE_EXCEPT(Exception::ERR_INVALIDPARAMS, "frameNumber paramter value exceeds number of stored frames.",
-                "TextureUnitState::deleteFrameTextureName");
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setAnimatedTextureName( const String& name, unsigned int numFrames, Real duration)
-    {
-		setContentType(CONTENT_NAMED);
-		mTextureLoadFailed = false;
-
-		String ext;
-        String baseName;
-
-        size_t pos = name.find_last_of(".");
-        baseName = name.substr(0, pos);
-        ext = name.substr(pos);
-
-        mFrames.resize(numFrames);
-		// resize pointers, but don't populate until needed
-        mFramePtrs.resize(numFrames);
-        mAnimDuration = duration;
-        mCurrentFrame = 0;
-        mCubic = false;
-
-        for (unsigned int i = 0; i < mFrames.size(); ++i)
-        {
-			StringUtil::StrStreamType str;
-            str << baseName << "_" << i << ext;
-            mFrames[i] = str.str();
-			mFramePtrs[i] = nullptr;
-        }
-
-        // Load immediately if Material loaded
-        if (isLoaded())
-        {
-            _load();
-        }
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setAnimatedTextureName(const String* const names, unsigned int numFrames, Real duration)
-    {
-		setContentType(CONTENT_NAMED);
-		mTextureLoadFailed = false;
-
-		mFrames.resize(numFrames);
-		// resize pointers, but don't populate until needed
-        mFramePtrs.resize(numFrames);
-        mAnimDuration = duration;
-        mCurrentFrame = 0;
-        mCubic = false;
-
-        for (unsigned int i = 0; i < mFrames.size(); ++i)
-        {
-            mFrames[i] = names[i];
-			mFramePtrs[i] = nullptr;
-        }
-
-        // Load immediately if Material loaded
-        if (isLoaded())
-        {
-            _load();
-        }
-    }
-    //-----------------------------------------------------------------------
-    std::pair< size_t, size_t > TextureUnitState::getTextureDimensions( unsigned int frame ) const
-    {
-		
-		TexturePtr tex = _getTexturePtr(frame);
-	    if (tex == nullptr)
-		    OGRE_EXCEPT( Exception::ERR_ITEM_NOT_FOUND, "Could not find texture " + mFrames[ frame ],
-		    "TextureUnitState::getTextureDimensions" );
-
-		return std::pair< size_t, size_t >( tex->getWidth(), tex->getHeight() );
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setCurrentFrame(unsigned int frameNumber)
-    {
-        if (frameNumber < mFrames.size())
-        {
-            mCurrentFrame = frameNumber;
-        }
-        else
-        {
-            OGRE_EXCEPT(Exception::ERR_INVALIDPARAMS, "frameNumber paramter value exceeds number of stored frames.",
-                "TextureUnitState::setCurrentFrame");
-        }
-
-    }
-    //-----------------------------------------------------------------------
-    unsigned int TextureUnitState::getCurrentFrame(void) const
-    {
-        return mCurrentFrame;
-    }
-    //-----------------------------------------------------------------------
-    unsigned int TextureUnitState::getNumFrames(void) const
-    {
-        return (unsigned int)mFrames.size();
-    }
-    //-----------------------------------------------------------------------
-    const String& TextureUnitState::getFrameTextureName(unsigned int frameNumber) const
-    {
-        if (frameNumber >= mFrames.size())
-        {
-            OGRE_EXCEPT(Exception::ERR_INVALIDPARAMS, "frameNumber paramter value exceeds number of stored frames.",
-                "TextureUnitState::getFrameTextureName");
-        }
-
-        return mFrames[frameNumber];
-    }
+	}
     //-----------------------------------------------------------------------
     void TextureUnitState::setDesiredFormat(PixelFormat desiredFormat)
     {
@@ -499,107 +132,6 @@ namespace Ogre {
 		return mHwGamma;
 	}
     //-----------------------------------------------------------------------
-    unsigned int TextureUnitState::getTextureCoordSet(void) const
-    {
-        return mTextureCoordSetIndex;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setTextureCoordSet(unsigned int set)
-    {
-        mTextureCoordSetIndex = set;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setColourOperationEx(LayerBlendOperationEx op,
-        LayerBlendSource source1,
-        LayerBlendSource source2,
-        const ColourValue& arg1,
-        const ColourValue& arg2,
-        Real manualBlend)
-    {
-        mColourBlendMode.operation = op;
-        mColourBlendMode.source1 = source1;
-        mColourBlendMode.source2 = source2;
-        mColourBlendMode.colourArg1 = arg1;
-        mColourBlendMode.colourArg2 = arg2;
-        mColourBlendMode.factor = manualBlend;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setColourOperation(LayerBlendOperation op)
-    {
-        // Set up the multitexture and multipass blending operations
-        switch (op)
-        {
-        case LBO_REPLACE:
-            setColourOperationEx(LBX_SOURCE1, LBS_TEXTURE, LBS_CURRENT);
-            setColourOpMultipassFallback(SBF_ONE, SBF_ZERO);
-            break;
-        case LBO_ADD:
-            setColourOperationEx(LBX_ADD, LBS_TEXTURE, LBS_CURRENT);
-            setColourOpMultipassFallback(SBF_ONE, SBF_ONE);
-            break;
-        case LBO_MODULATE:
-            setColourOperationEx(LBX_MODULATE, LBS_TEXTURE, LBS_CURRENT);
-            setColourOpMultipassFallback(SBF_DEST_COLOUR, SBF_ZERO);
-            break;
-        case LBO_ALPHA_BLEND:
-            setColourOperationEx(LBX_BLEND_TEXTURE_ALPHA, LBS_TEXTURE, LBS_CURRENT);
-            setColourOpMultipassFallback(SBF_SOURCE_ALPHA, SBF_ONE_MINUS_SOURCE_ALPHA);
-            break;
-        }
-
-
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setColourOpMultipassFallback(SceneBlendFactor sourceFactor, SceneBlendFactor destFactor)
-    {
-        mColourBlendFallbackSrc = sourceFactor;
-        mColourBlendFallbackDest = destFactor;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setAlphaOperation(LayerBlendOperationEx op,
-        LayerBlendSource source1,
-        LayerBlendSource source2,
-        Real arg1,
-        Real arg2,
-        Real manualBlend)
-    {
-        mAlphaBlendMode.operation = op;
-        mAlphaBlendMode.source1 = source1;
-        mAlphaBlendMode.source2 = source2;
-        mAlphaBlendMode.alphaArg1 = arg1;
-        mAlphaBlendMode.alphaArg2 = arg2;
-        mAlphaBlendMode.factor = manualBlend;
-    }
-    //-----------------------------------------------------------------------
-    bool TextureUnitState::isBlank(void) const
-    {
-		if (mFrames.empty())
-			return true;
-		else
-			return mFrames[0].empty() || mTextureLoadFailed;
-    }
-
-    //-----------------------------------------------------------------------
-    SceneBlendFactor TextureUnitState::getColourBlendFallbackSrc(void) const
-    {
-        return mColourBlendFallbackSrc;
-    }
-    //-----------------------------------------------------------------------
-    SceneBlendFactor TextureUnitState::getColourBlendFallbackDest(void) const
-    {
-        return mColourBlendFallbackDest;
-    }
-    //-----------------------------------------------------------------------
-    const LayerBlendModeEx& TextureUnitState::getColourBlendMode(void) const
-    {
-        return mColourBlendMode;
-    }
-    //-----------------------------------------------------------------------
-    const LayerBlendModeEx& TextureUnitState::getAlphaBlendMode(void) const
-    {
-        return mAlphaBlendMode;
-    }
-    //-----------------------------------------------------------------------
     const TextureUnitState::UVWAddressingMode& 
 	TextureUnitState::getTextureAddressingMode(void) const
     {
@@ -629,242 +161,6 @@ namespace Ogre {
     {
         mAddressMode = uvw;
     }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setTextureBorderColour(const ColourValue& colour)
-    {
-        mBorderColour = colour;
-    }
-    //-----------------------------------------------------------------------
-    const ColourValue& TextureUnitState::getTextureBorderColour(void) const
-    {
-        return mBorderColour;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setBlank(void)
-    {
-		setTextureName(StringUtil::BLANK);
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setTextureTransform(const Matrix4& xform)
-    {
-        mTexModMatrix = xform;
-        mRecalcTexMatrix = false;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setTextureScroll(Real u, Real v)
-    {
-        mUMod = u;
-        mVMod = v;
-        mRecalcTexMatrix = true;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setTextureScale(Real uScale, Real vScale)
-    {
-        mUScale = uScale;
-        mVScale = vScale;
-        mRecalcTexMatrix = true;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setTextureRotate(const Radian& angle)
-    {
-        mRotate = angle;
-        mRecalcTexMatrix = true;
-    }
-    //-----------------------------------------------------------------------
-    const Matrix4& TextureUnitState::getTextureTransform() const
-    {
-        if (mRecalcTexMatrix)
-            recalcTextureMatrix();
-        return mTexModMatrix;
-
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::recalcTextureMatrix() const
-    {
-        // Assumption: 2D texture coords
-        Matrix4 xform;
-
-        xform = Matrix4::IDENTITY;
-        if (mUScale != 1 || mVScale != 1)
-        {
-            // Offset to center of texture
-            xform[0][0] = 1/mUScale;
-            xform[1][1] = 1/mVScale;
-            // Skip matrix concat since first matrix update
-            xform[0][3] = (-0.5f * xform[0][0]) + 0.5f;
-            xform[1][3] = (-0.5f * xform[1][1]) + 0.5f;
-        }
-
-        if (mUMod || mVMod)
-        {
-            Matrix4 xlate = Matrix4::IDENTITY;
-
-            xlate[0][3] = mUMod;
-            xlate[1][3] = mVMod;
-
-            xform = xlate * xform;
-        }
-
-        if (mRotate != Radian(0))
-        {
-            Matrix4 rot = Matrix4::IDENTITY;
-            Radian theta ( mRotate );
-            Real cosTheta = Math::Cos(theta);
-            Real sinTheta = Math::Sin(theta);
-
-            rot[0][0] = cosTheta;
-            rot[0][1] = -sinTheta;
-            rot[1][0] = sinTheta;
-            rot[1][1] = cosTheta;
-            // Offset center of rotation to center of texture
-            rot[0][3] = 0.5f + ( (-0.5f * cosTheta) - (-0.5f * sinTheta) );
-            rot[1][3] = 0.5f + ( (-0.5f * sinTheta) + (-0.5f * cosTheta) );
-
-            xform = rot * xform;
-        }
-
-        mTexModMatrix = xform;
-        mRecalcTexMatrix = false;
-
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setTextureUScroll(Real value)
-    {
-        mUMod = value;
-        mRecalcTexMatrix = true;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setTextureVScroll(Real value)
-    {
-        mVMod = value;
-        mRecalcTexMatrix = true;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setTextureUScale(Real value)
-    {
-        mUScale = value;
-        mRecalcTexMatrix = true;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setTextureVScale(Real value)
-    {
-        mVScale = value;
-        mRecalcTexMatrix = true;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::_prepare(void)
-    {
-        // Unload first
-        //_unload();
-
-        // Load textures
-		for (unsigned int i = 0; i < mFrames.size(); ++i)
-		{
-			ensurePrepared(i);
-		}
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::_load(void)
-    {
-
-        // Load textures
-		for (unsigned int i = 0; i < mFrames.size(); ++i)
-		{
-			ensureLoaded(i);
-		}
-    }
-    //-----------------------------------------------------------------------
-	const TexturePtr& TextureUnitState::_getTexturePtr(void) const
-	{
-		return _getTexturePtr(mCurrentFrame);
-	}
-    //-----------------------------------------------------------------------
-	const TexturePtr& TextureUnitState::_getTexturePtr(size_t frame) const
-	{
-		if (mContentType == CONTENT_NAMED)
-		{
-			if (frame < mFrames.size() && !mTextureLoadFailed)
-			{
-				ensureLoaded(frame);
-				return mFramePtrs[frame];
-			}
-			else
-			{
-				// Silent fail with empty texture for internal method
-				static TexturePtr nullTexPtr;
-				return nullTexPtr;
-			}
-		}
-		else
-		{
-			// Manually bound texture, no name or loading
-			assert(frame < mFramePtrs.size());
-			return mFramePtrs[frame];
-
-		}
-		
-	}
-	//-----------------------------------------------------------------------
-	void TextureUnitState::_setTexturePtr(const TexturePtr& texptr)
-	{
-		_setTexturePtr(texptr, mCurrentFrame);
-	}
-	//-----------------------------------------------------------------------
-	void TextureUnitState::_setTexturePtr(const TexturePtr& texptr, size_t frame)
-	{
-		assert(frame < mFramePtrs.size());
-		mFramePtrs[frame] = texptr;
-	}
-    //-----------------------------------------------------------------------
-	void TextureUnitState::ensurePrepared(size_t frame) const
-	{
-	}
-    //-----------------------------------------------------------------------
-	void TextureUnitState::ensureLoaded(size_t frame) const
-	{
-	}
-    //-----------------------------------------------------------------------
-	Real TextureUnitState::getTextureUScroll(void) const
-    {
-		return mUMod;
-    }
-
-	//-----------------------------------------------------------------------
-	Real TextureUnitState::getTextureVScroll(void) const
-    {
-		return mVMod;
-    }
-
-	//-----------------------------------------------------------------------
-	Real TextureUnitState::getTextureUScale(void) const
-    {
-		return mUScale;
-    }
-
-	//-----------------------------------------------------------------------
-	Real TextureUnitState::getTextureVScale(void) const
-    {
-		return mVScale;
-    }
-
-	//-----------------------------------------------------------------------
-	const Radian& TextureUnitState::getTextureRotate(void) const
-    {
-		return mRotate;
-    }
-	
-	//-----------------------------------------------------------------------
-	Real TextureUnitState::getAnimationDuration(void) const
-	{
-		return mAnimDuration;
-	}
-
-	//-----------------------------------------------------------------------
-	const TextureUnitState::EffectMap& TextureUnitState::getEffects(void) const
-	{
-		return mEffects;
-	}
-
 	//-----------------------------------------------------------------------
 	void TextureUnitState::setTextureFiltering(TextureFilterOptions filterType)
 	{
@@ -938,124 +234,4 @@ namespace Ogre {
 	{
         return mMaxAniso;
 	}
-
-	//-----------------------------------------------------------------------
-    void TextureUnitState::_unprepare(void)
-    {
-        // Unreference textures
-        vector<TexturePtr>::type::iterator ti, tiend;
-        tiend = mFramePtrs.end();
-        for (ti = mFramePtrs.begin(); ti != tiend; ++ti)
-        {
-            (*ti) = nullptr;
-        }
-    }
-	//-----------------------------------------------------------------------
-    void TextureUnitState::_unload(void)
-    {
-        // Unreference but don't unload textures. may be used elsewhere
-        vector<TexturePtr>::type::iterator ti, tiend;
-        tiend = mFramePtrs.end();
-        for (ti = mFramePtrs.begin(); ti != tiend; ++ti)
-        {
-            (*ti) = nullptr;
-        }
-    }
-    //-----------------------------------------------------------------------------
-    bool TextureUnitState::isLoaded(void) const
-    {
-        return true;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::_notifyNeedsRecompile(void)
-    {
-
-    }
-    //-----------------------------------------------------------------------
-    bool TextureUnitState::hasViewRelativeTextureCoordinateGeneration(void) const
-    {
-        // Right now this only returns true for reflection maps
-
-        EffectMap::const_iterator i, iend;
-        iend = mEffects.end();
-        
-        for(i = mEffects.find(ET_ENVIRONMENT_MAP); i != iend; ++i)
-        {
-            if (i->second.subtype == ENV_REFLECTION)
-                return true;
-        }
-        for(i = mEffects.find(ET_PROJECTIVE_TEXTURE); i != iend; ++i)
-        {
-            return true;
-        }
-
-        return false;
-    }
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setName(const String& name)
-    {
-        mName = name;
-		if (mTextureNameAlias.empty())
-			mTextureNameAlias = mName;
-    }
-
-    //-----------------------------------------------------------------------
-    void TextureUnitState::setTextureNameAlias(const String& name)
-    {
-        mTextureNameAlias = name;
-    }
-
-    //-----------------------------------------------------------------------
-    bool TextureUnitState::applyTextureAliases(const AliasTextureNamePairList& aliasList, const bool apply)
-    {
-        bool testResult = false;
-        // if TUS has an alias see if its in the alias container
-        if (!mTextureNameAlias.empty())
-        {
-            AliasTextureNamePairList::const_iterator aliasEntry =
-                aliasList.find(mTextureNameAlias);
-
-            if (aliasEntry != aliasList.end())
-            {
-                // match was found so change the texture name in mFrames
-                testResult = true;
-
-                if (apply)
-                {
-                    // currently assumes animated frames are sequentially numbered
-                    // cubic, 1d, 2d, and 3d textures are determined from current TUS state
-                    
-                    // if cubic or 3D
-                    if (mCubic)
-                    {
-                        setCubicTextureName(aliasEntry->second, mTextureType == TEX_TYPE_CUBE_MAP);
-                    }
-                    else
-                    {
-                        // if more than one frame then assume animated frames
-                        if (mFrames.size() > 1)
-                            setAnimatedTextureName(aliasEntry->second, 
-								static_cast<unsigned int>(mFrames.size()), mAnimDuration);
-                        else
-                            setTextureName(aliasEntry->second, mTextureType);
-                    }
-                }
-                
-            }
-        }
-
-        return testResult;
-    }
-	//-----------------------------------------------------------------------------
-	void TextureUnitState::_notifyParent(Pass* parent)
-	{
-		mParent = parent;
-	}
-	//-----------------------------------------------------------------------------
-	void TextureUnitState::setCompositorReference(const String& compositorName, const String& textureName, size_t mrtIndex)
-	{  
-		mCompositorRefName = compositorName; 
-		mCompositorRefTexName = textureName; 
-		mCompositorRefMrtIndex = mrtIndex; 
-	}
 }

+ 2 - 775
CamelotRenderer/OgreTextureUnitState.h

@@ -62,60 +62,6 @@ namespace Ogre {
     {
         friend class RenderSystem;
     public:
-        /** Definition of the broad types of texture effect you can apply to a texture unit.
-        @note
-            Note that these have no effect when using the programmable pipeline, since their
-            effect is overridden by the vertex / fragment programs.
-        */
-        enum TextureEffectType
-        {
-            /// Generate all texture coords based on angle between camera and vertex
-            ET_ENVIRONMENT_MAP,
-            /// Generate texture coords based on a frustum
-            ET_PROJECTIVE_TEXTURE,
-            /// Constant u/v scrolling effect
-            ET_UVSCROLL,
-			/// Constant u scrolling effect
-            ET_USCROLL,
-			/// Constant u/v scrolling effect
-            ET_VSCROLL,
-            /// Constant rotation
-            ET_ROTATE,
-            /// More complex transform
-            ET_TRANSFORM
-
-        };
-
-        /** Enumeration to specify type of envmap.
-        @note
-            Note that these have no effect when using the programmable pipeline, since their
-            effect is overridden by the vertex / fragment programs.
-        */
-        enum EnvMapType
-        {
-            /// Envmap based on vector from camera to vertex position, good for planar geometry
-            ENV_PLANAR,
-            /// Envmap based on dot of vector from camera to vertex and vertex normal, good for curves
-            ENV_CURVED,
-            /// Envmap intended to supply reflection vectors for cube mapping
-            ENV_REFLECTION,
-            /// Envmap intended to supply normal vectors for cube mapping
-            ENV_NORMAL
-        };
-
-        /** Useful enumeration when dealing with procedural transforms.
-        @note
-            Note that these have no effect when using the programmable pipeline, since their
-            effect is overridden by the vertex / fragment programs.
-        */
-        enum TextureTransformType
-        {
-            TT_TRANSLATE_U,
-            TT_TRANSLATE_V,
-            TT_SCALE_U,
-            TT_SCALE_V,
-            TT_ROTATE
-        };
 
         /** Texture addressing modes - default is TAM_WRAP.
         @note
@@ -152,29 +98,11 @@ namespace Ogre {
             CUBE_DOWN = 5
         };
 
-        /** Internal structure defining a texture effect.
-        */
-        struct TextureEffect {
-            TextureEffectType type;
-            int subtype;
-            Real arg1, arg2;
-            WaveformType waveType;
-            Real base;
-            Real frequency;
-            Real phase;
-            Real amplitude;
-            const Frustum* frustum;
-        };
-
-        /** Texture effects in a multimap paired array
-        */
-        typedef multimap<TextureEffectType, TextureEffect>::type EffectMap;
-
         /** Default constructor.
         */
-        TextureUnitState(Pass* parent);
+        TextureUnitState(TextureType type);
 
-        TextureUnitState(Pass* parent, const TextureUnitState& oth );
+        TextureUnitState(const TextureUnitState& oth );
 
         TextureUnitState & operator = ( const TextureUnitState& oth );
 
@@ -182,229 +110,6 @@ namespace Ogre {
         */
         ~TextureUnitState();
 
-        /** Name-based constructor.
-        @param
-        name The basic name of the texture e.g. brickwall.jpg, stonefloor.png
-        @param
-        texCoordSet The index of the texture coordinate set to use.
-        */
-		TextureUnitState( Pass* parent, const String& texName, unsigned int texCoordSet = 0);
-
-        /** Get the name of current texture image for this layer.
-        @remarks
-        This will either always be a single name for this layer,
-        or will be the name of the current frame for an animated
-        or otherwise multi-frame texture.
-        @note
-        Applies to both fixed-function and programmable pipeline.
-        */
-        const String& getTextureName(void) const;
-
-        /** Sets this texture layer to use a single texture, given the
-        name of the texture to use on this layer.
-        @note
-        Applies to both fixed-function and programmable pipeline.
-        */
-        void setTextureName( const String& name, TextureType ttype = TEX_TYPE_2D);
-
-		/** Sets this texture layer to use a combination of 6 texture maps, each one relating to a face of a cube.
-        @remarks
-        Cubic textures are made up of 6 separate texture images. Each one of these is an orthoganal view of the
-        world with a FOV of 90 degrees and an aspect ratio of 1:1. You can generate these from 3D Studio by
-        rendering a scene to a reflection map of a transparent cube and saving the output files.
-        @par
-        Cubic maps can be used either for skyboxes (complete wrap-around skies, like space) or as environment
-        maps to simulate reflections. The system deals with these 2 scenarios in different ways:
-        <ol>
-        <li>
-        <p>
-        for cubic environment maps, the 6 textures are combined into a single 'cubic' texture map which
-        is then addressed using 3D texture coordinates. This is required because you don't know what
-        face of the box you're going to need to address when you render an object, and typically you
-        need to reflect more than one face on the one object, so all 6 textures are needed to be
-        'active' at once. Cubic environment maps are enabled by calling this method with the forUVW
-        parameter set to true, and then calling setEnvironmentMap(true).
-        </p>
-        <p>
-        Note that not all cards support cubic environment mapping.
-        </p>
-        </li>
-        <li>
-        <p>
-        for skyboxes, the 6 textures are kept separate and used independently for each face of the skybox.
-        This is done because not all cards support 3D cubic maps and skyboxes do not need to use 3D
-        texture coordinates so it is simpler to render each face of the box with 2D coordinates, changing
-        texture between faces.
-        </p>
-        <p>
-        Skyboxes are created by calling SceneManager::setSkyBox.
-        </p>
-        </li>
-        </ul>
-        @note
-        Applies to both fixed-function and programmable pipeline.
-        @param
-        name The basic name of the texture e.g. brickwall.jpg, stonefloor.png. There must be 6 versions
-        of this texture with the suffixes _fr, _bk, _up, _dn, _lf, and _rt (before the extension) which
-        make up the 6 sides of the box. The textures must all be the same size and be powers of 2 in width & height.
-        If you can't make your texture names conform to this, use the alternative method of the same name which takes
-        an array of texture names instead.
-        @param
-        forUVW Set to true if you want a single 3D texture addressable with 3D texture coordinates rather than
-        6 separate textures. Useful for cubic environment mapping.
-        */
-        void setCubicTextureName( const String& name, bool forUVW = false );
-
-        /** Sets this texture layer to use a combination of 6 texture maps, each one relating to a face of a cube.
-        @remarks
-        Cubic textures are made up of 6 separate texture images. Each one of these is an orthoganal view of the
-        world with a FOV of 90 degrees and an aspect ratio of 1:1. You can generate these from 3D Studio by
-        rendering a scene to a reflection map of a transparent cube and saving the output files.
-        @par
-        Cubic maps can be used either for skyboxes (complete wrap-around skies, like space) or as environment
-        maps to simulate reflections. The system deals with these 2 scenarios in different ways:
-        <ol>
-        <li>
-        <p>
-        for cubic environment maps, the 6 textures are combined into a single 'cubic' texture map which
-        is then addressed using 3D texture coordinates. This is required because you don't know what
-        face of the box you're going to need to address when you render an object, and typically you
-        need to reflect more than one face on the one object, so all 6 textures are needed to be
-        'active' at once. Cubic environment maps are enabled by calling this method with the forUVW
-        parameter set to true, and then calling setEnvironmentMap(true).
-        </p>
-        <p>
-        Note that not all cards support cubic environment mapping.
-        </p>
-        </li>
-        <li>
-        <p>
-        for skyboxes, the 6 textures are kept separate and used independently for each face of the skybox.
-        This is done because not all cards support 3D cubic maps and skyboxes do not need to use 3D
-        texture coordinates so it is simpler to render each face of the box with 2D coordinates, changing
-        texture between faces.
-        </p>
-        <p>
-        Skyboxes are created by calling SceneManager::setSkyBox.
-        </p>
-        </li>
-        </ul>
-        @note
-        Applies to both fixed-function and programmable pipeline.
-        @param
-        name The basic name of the texture e.g. brickwall.jpg, stonefloor.png. There must be 6 versions
-        of this texture with the suffixes _fr, _bk, _up, _dn, _lf, and _rt (before the extension) which
-        make up the 6 sides of the box. The textures must all be the same size and be powers of 2 in width & height.
-        If you can't make your texture names conform to this, use the alternative method of the same name which takes
-        an array of texture names instead.
-        @param
-        forUVW Set to true if you want a single 3D texture addressable with 3D texture coordinates rather than
-        6 separate textures. Useful for cubic environment mapping.
-        */
-        void setCubicTextureName( const String* const names, bool forUVW = false );
-
-        /** Sets the names of the texture images for an animated texture.
-        @remarks
-        Animated textures are just a series of images making up the frames of the animation. All the images
-        must be the same size, and their names must have a frame number appended before the extension, e.g.
-        if you specify a name of "wall.jpg" with 3 frames, the image names must be "wall_0.jpg", "wall_1.jpg"
-        and "wall_2.jpg".
-        @par
-        You can change the active frame on a texture layer by calling the setCurrentFrame method.
-        @note
-        If you can't make your texture images conform to the naming standard layed out here, you
-        can call the alternative setAnimatedTextureName method which takes an array of names instead.
-        @note
-        Applies to both fixed-function and programmable pipeline.
-        @param
-        name The base name of the textures to use e.g. wall.jpg for frames wall_0.jpg, wall_1.jpg etc.
-        @param
-        numFrames The number of frames in the sequence.
-        @param
-        duration The length of time it takes to display the whole animation sequence, in seconds.
-        If 0, no automatic transition occurs.
-        */
-        void setAnimatedTextureName( const String& name, unsigned int numFrames, Real duration = 0 );
-
-        /** Sets the names of the texture images for an animated texture.
-        @remarks
-        This an alternative method to the one where you specify a single name and let the system derive
-        the names of each frame, incase your images can't conform to this naming standard.
-        @par
-        Animated textures are just a series of images making up the frames of the animation. All the images
-        must be the same size, and you must provide their names as an array in the first parameter.
-        You can change the active frame on a texture layer by calling the setCurrentFrame method.
-        @note
-        If you can make your texture images conform to a naming standard of basicName_frame.ext, you
-        can call the alternative setAnimatedTextureName method which just takes a base name instead.
-        @note
-        Applies to both fixed-function and programmable pipeline.
-        @param
-        names Pointer to array of names of the textures to use, in frame order.
-        @param
-        numFrames The number of frames in the sequence.
-        @param
-        duration The length of time it takes to display the whole animation sequence, in seconds.
-        If 0, no automatic transition occurs.
-        */
-        void setAnimatedTextureName( const String* const names, unsigned int numFrames, Real duration = 0 );
-
-        /** Returns the width and height of the texture in the given frame.
-        */
-        std::pair< size_t, size_t > getTextureDimensions( unsigned int frame = 0 ) const;
-
-        /** Changes the active frame in an animated or multi-image texture.
-        @remarks
-        An animated texture (or a cubic texture where the images are not combined for 3D use) is made up of
-        a number of frames. This method sets the active frame.
-        @note
-        Applies to both fixed-function and programmable pipeline.
-        */
-        void setCurrentFrame( unsigned int frameNumber );
-
-        /** Gets the active frame in an animated or multi-image texture layer.
-        @note
-        Applies to both fixed-function and programmable pipeline.
-        */
-        unsigned int getCurrentFrame(void) const;
-
-        /** Gets the name of the texture associated with a frame number.
-            Throws an exception if frameNumber exceeds the number of stored frames.
-        @note
-        Applies to both fixed-function and programmable pipeline.
-        */
-        const String& getFrameTextureName(unsigned int frameNumber) const;
-
-        /** Sets the name of the texture associated with a frame.
-        @param name The name of the texture
-        @param frameNumber The frame the texture name is to be placed in
-        @note
-        Throws an exception if frameNumber exceeds the number of stored frames.
-        Applies to both fixed-function and programmable pipeline.
-        */
-        void setFrameTextureName(const String& name, unsigned int frameNumber);
-
-        /** Add a Texture name to the end of the frame container.
-        @param name The name of the texture
-        @note
-        Applies to both fixed-function and programmable pipeline.
-        */
-        void addFrameTextureName(const String& name);
-        /** deletes a specific texture frame.  The texture used is not deleted but the
-            texture will no longer be used by the Texture Unit.  An exception is raised
-            if the frame number exceeds the number of actual frames.
-        @param frameNumber The frame number of the texture to be deleted.
-        @note
-        Applies to both fixed-function and programmable pipeline.
-        */
-        void deleteFrameTextureName(const size_t frameNumber);
-        /** Gets the number of frames for a texture.
-        @note
-        Applies to both fixed-function and programmable pipeline.
-        */
-        unsigned int getNumFrames(void) const;
-
-
 		/** The type of unit to bind the texture settings to. */
 		enum BindingType
 		{
@@ -415,17 +120,6 @@ namespace Ogre {
 			*/
 			BT_VERTEX = 1
 		};
-		/** Enum identifying the type of content this texture unit contains.
-		*/
-		enum ContentType
-		{
-			/// Normal texture identified by name
-			CONTENT_NAMED = 0,
-			/// A shadow texture, automatically bound by engine
-			CONTENT_SHADOW = 1,
-			/// A compositor texture, automatically linked to active viewport's chain
-			CONTENT_COMPOSITOR = 2
-		};
 
 		/** Sets the type of unit these texture settings should be bound to. 
 		@remarks
@@ -442,15 +136,6 @@ namespace Ogre {
 		*/
 		BindingType getBindingType(void) const;
 
-		/** Set the type of content this TextureUnitState references.
-		@remarks
-			The default is to reference a standard named texture, but this unit
-			can also reference automated content like a shadow texture.
-		*/
-		void setContentType(ContentType ct);
-		/** Get the type of content this TextureUnitState references. */
-		ContentType getContentType(void) const;
-
         /** Returns true if this texture unit is either a series of 6 2D textures, each
             in it's own frame, or is a full 3D cube map. You can tell which by checking
             getTextureType.
@@ -500,121 +185,6 @@ namespace Ogre {
 		/// @copydoc Texture::isHardwareGammaEnabled
 		bool isHardwareGammaEnabled() const;
 
-        /** Gets the index of the set of texture co-ords this layer uses.
-        @note
-        Applies to both fixed-function and programmable pipeline.
-        */
-        unsigned int getTextureCoordSet(void) const;
-
-        /** Sets the index of the set of texture co-ords this layer uses.
-        @note
-        Default is 0 for all layers. Only change this if you have provided multiple texture co-ords per
-        vertex.
-        @note
-        Applies to both fixed-function and programmable pipeline.
-        */
-        void setTextureCoordSet(unsigned int set);
-
-        /** Sets a matrix used to transform any texture coordinates on this layer.
-        @remarks
-        Texture coordinates can be modified on a texture layer to create effects like scrolling
-        textures. A texture transform can either be applied to a layer which takes the source coordinates
-        from a fixed set in the geometry, or to one which generates them dynamically (e.g. environment mapping).
-        @par
-        It's obviously a bit impractical to create scrolling effects by calling this method manually since you
-        would have to call it every framw with a slight alteration each time, which is tedious. Instead
-        you can use the ControllerManager class to create a Controller object which will manage the
-        effect over time for you. See the ControllerManager::createTextureScroller and it's sibling methods for details.<BR>
-        In addition, if you want to set the individual texture transformations rather than concatenating them
-        yourself, use setTextureScroll, setTextureScale and setTextureRotate.
-        @note
-        Has no effect in the programmable pipeline.
-        */
-        void setTextureTransform(const Matrix4& xform);
-
-        /** Gets the current texture transformation matrix.
-        @remarks
-        Causes a reclaculation of the matrix if any parameters have been changed via
-        setTextureScroll, setTextureScale and setTextureRotate.
-        @note
-        Has no effect in the programmable pipeline.
-        */
-        const Matrix4& getTextureTransform(void) const;
-
-        /** Sets the translation offset of the texture, ie scrolls the texture.
-        @remarks
-        This method sets the translation element of the texture transformation, and is easier to use than setTextureTransform if
-        you are combining translation, scaling and rotation in your texture transformation. Again if you want
-        to animate these values you need to use a Controller
-        @note
-        Has no effect in the programmable pipeline.
-        @param u The amount the texture should be moved horizontally (u direction).
-        @param v The amount the texture should be moved vertically (v direction).
-        @see
-        ControllerManager, Controller
-        */
-        void setTextureScroll(Real u, Real v);
-
-        /** As setTextureScroll, but sets only U value.
-        @note
-        Has no effect in the programmable pipeline.
-        */
-        void setTextureUScroll(Real value);
-        // get texture uscroll value
-        Real getTextureUScroll(void) const;
-
-        /** As setTextureScroll, but sets only V value.
-        @note
-        Has no effect in the programmable pipeline.
-        */
-        void setTextureVScroll(Real value);
-        // get texture vscroll value
-        Real getTextureVScroll(void) const;
-
-        /** As setTextureScale, but sets only U value.
-        @note
-        Has no effect in the programmable pipeline.
-        */
-        void setTextureUScale(Real value);
-        // get texture uscale value
-        Real getTextureUScale(void) const;
-
-        /** As setTextureScale, but sets only V value.
-        @note
-        Has no effect in the programmable pipeline.
-        */
-        void setTextureVScale(Real value);
-        // get texture vscale value
-        Real getTextureVScale(void) const;
-
-        /** Sets the scaling factor applied to texture coordinates.
-        @remarks
-        This method sets the scale element of the texture transformation, and is easier to use than
-        setTextureTransform if you are combining translation, scaling and rotation in your texture transformation. Again if you want
-        to animate these values you need to use a Controller (see ControllerManager and it's methods for
-        more information).
-        @note
-        Has no effect in the programmable pipeline.
-        @param
-        uScale The value by which the texture is to be scaled horizontally.
-        @param
-        vScale The value by which the texture is to be scaled vertically.
-        */
-        void setTextureScale(Real uScale, Real vScale);
-
-        /** Sets the anticlockwise rotation factor applied to texture coordinates.
-        @remarks
-        This sets a fixed rotation angle - if you wish to animate this, see the
-        ControllerManager::createTextureRotater method.
-        @note
-        Has no effect in the programmable pipeline.
-        @param
-        angle The angle of rotation (anticlockwise).
-        */
-        void setTextureRotate(const Radian& angle);
-        // get texture rotation effects angle value
-        const Radian& getTextureRotate(void) const;
-
         /** Gets the texture addressing mode for a given coordinate, 
 		 	i.e. what happens at uv values above 1.0.
         @note
@@ -650,209 +220,6 @@ namespace Ogre {
 		*/
         void setTextureAddressingMode( const UVWAddressingMode& uvw);
 
-        /** Sets the texture border colour.
-        @note
-            The default is ColourValue::Black, and this value only used when addressing mode
-            is TAM_BORDER.
-        @note
-            This applies for both the fixed-function and programmable pipelines.
-		*/
-        void setTextureBorderColour(const ColourValue& colour);
-
-        /** Sets the texture border colour.
-        @note
-            The default is ColourValue::Black, and this value only used when addressing mode
-            is TAM_BORDER.
-		*/
-        const ColourValue& getTextureBorderColour(void) const;
-
-		/** Setting advanced blending options.
-        @remarks
-        This is an extended version of the TextureUnitState::setColourOperation method which allows
-        extremely detailed control over the blending applied between this and earlier layers.
-        See the IMPORTANT note below about the issues between mulitpass and multitexturing that
-        using this method can create.
-        @par
-        Texture colour operations determine how the final colour of the surface appears when
-        rendered. Texture units are used to combine colour values from various sources (ie. the
-        diffuse colour of the surface from lighting calculations, combined with the colour of
-        the texture). This method allows you to specify the 'operation' to be used, ie. the
-        calculation such as adds or multiplies, and which values to use as arguments, such as
-        a fixed value or a value from a previous calculation.
-        @par
-        The defaults for each layer are:
-        <ul>
-        <li>op = LBX_MODULATE</li>
-        <li>source1 = LBS_TEXTURE</li>
-        <li>source2 = LBS_CURRENT</li>
-        </ul>
-        ie. each layer takes the colour results of the previous layer, and multiplies them
-        with the new texture being applied. Bear in mind that colours are RGB values from
-        0.0 - 1.0 so multiplying them together will result in values in the same range,
-        'tinted' by the multiply. Note however that a straight multiply normally has the
-        effect of darkening the textures - for this reason there are brightening operations
-        like LBO_MODULATE_X2. See the LayerBlendOperation and LayerBlendSource enumerated
-        types for full details.
-        @note
-        Because of the limitations on some underlying APIs (Direct3D included)
-        the LBS_TEXTURE argument can only be used as the first argument, not the second.
-        @par
-        The final 3 parameters are only required if you decide to pass values manually
-        into the operation, i.e. you want one or more of the inputs to the colour calculation
-        to come from a fixed value that you supply. Hence you only need to fill these in if
-        you supply LBS_MANUAL to the corresponding source, or use the LBX_BLEND_MANUAL
-        operation.
-        @warning
-        Ogre tries to use multitexturing hardware to blend texture layers
-        together. However, if it runs out of texturing units (e.g. 2 of a GeForce2, 4 on a
-        GeForce3) it has to fall back on multipass rendering, i.e. rendering the same object
-        multiple times with different textures. This is both less efficient and there is a smaller
-        range of blending operations which can be performed. For this reason, if you use this method
-        you MUST also call TextureUnitState::setColourOpMultipassFallback to specify which effect you
-        want to fall back on if sufficient hardware is not available.
-        @note
-        This has no effect in the programmable pipeline.
-        @param
-        If you wish to avoid having to do this, use the simpler TextureUnitState::setColourOperation method
-        which allows less flexible blending options but sets up the multipass fallback automatically,
-        since it only allows operations which have direct multipass equivalents.
-        @param
-        op The operation to be used, e.g. modulate (multiply), add, subtract
-        @param
-        source1 The source of the first colour to the operation e.g. texture colour
-        @param
-        source2 The source of the second colour to the operation e.g. current surface colour
-        @param
-        arg1 Manually supplied colour value (only required if source1 = LBS_MANUAL)
-        @param
-        arg2 Manually supplied colour value (only required if source2 = LBS_MANUAL)
-        @param
-        manualBlend Manually supplied 'blend' value - only required for operations
-        which require manual blend e.g. LBX_BLEND_MANUAL
-        */
-        void setColourOperationEx(
-            LayerBlendOperationEx op,
-            LayerBlendSource source1 = LBS_TEXTURE,
-            LayerBlendSource source2 = LBS_CURRENT,
-
-            const ColourValue& arg1 = ColourValue::White,
-            const ColourValue& arg2 = ColourValue::White,
-
-            Real manualBlend = 0.0);
-
-        /** Determines how this texture layer is combined with the one below it (or the diffuse colour of
-        the geometry if this is layer 0).
-        @remarks
-        This method is the simplest way to blend tetxure layers, because it requires only one parameter,
-        gives you the most common blending types, and automatically sets up 2 blending methods: one for
-        if single-pass multitexturing hardware is available, and another for if it is not and the blending must
-        be achieved through multiple rendering passes. It is, however, quite limited and does not expose
-        the more flexible multitexturing operations, simply because these can't be automatically supported in
-        multipass fallback mode. If want to use the fancier options, use TextureUnitState::setColourOperationEx,
-        but you'll either have to be sure that enough multitexturing units will be available, or you should
-        explicitly set a fallback using TextureUnitState::setColourOpMultipassFallback.
-        @note
-        The default method is LBO_MODULATE for all layers.
-        @note
-        This option has no effect in the programmable pipeline.
-        @param
-        op One of the LayerBlendOperation enumerated blending types.
-        */
-        void setColourOperation( const LayerBlendOperation op);
-
-        /** Sets the multipass fallback operation for this layer, if you used TextureUnitState::setColourOperationEx
-        and not enough multitexturing hardware is available.
-        @remarks
-        Because some effects exposed using TextureUnitState::setColourOperationEx are only supported under
-        multitexturing hardware, if the hardware is lacking the system must fallback on multipass rendering,
-        which unfortunately doesn't support as many effects. This method is for you to specify the fallback
-        operation which most suits you.
-        @par
-        You'll notice that the interface is the same as the Material::setSceneBlending method; this is
-        because multipass rendering IS effectively scene blending, since each layer is rendered on top
-        of the last using the same mechanism as making an object transparent, it's just being rendered
-        in the same place repeatedly to get the multitexture effect.
-        @par
-        If you use the simpler (and hence less flexible) TextureUnitState::setColourOperation method you
-        don't need to call this as the system sets up the fallback for you.
-        @note
-        This option has no effect in the programmable pipeline, because there is no multipass fallback
-        and multitexture blending is handled by the fragment shader.
-        */
-        void setColourOpMultipassFallback( const SceneBlendFactor sourceFactor, const SceneBlendFactor destFactor);
-
-        /** Get multitexturing colour blending mode.
-        */
-        const LayerBlendModeEx& getColourBlendMode(void) const;
-
-        /** Get multitexturing alpha blending mode.
-        */
-        const LayerBlendModeEx& getAlphaBlendMode(void) const;
-
-        /** Get the multipass fallback for colour blending operation source factor.
-        */
-        SceneBlendFactor getColourBlendFallbackSrc(void) const;
-
-        /** Get the multipass fallback for colour blending operation destination factor.
-        */
-        SceneBlendFactor getColourBlendFallbackDest(void) const;
-
-        /** Sets the alpha operation to be applied to this texture.
-        @remarks
-        This works in exactly the same way as setColourOperation, except
-        that the effect is applied to the level of alpha (i.e. transparency)
-        of the texture rather than its colour. When the alpha of a texel (a pixel
-        on a texture) is 1.0, it is opaque, wheras it is fully transparent if the
-        alpha is 0.0. Please refer to the setColourOperation method for more info.
-        @param
-        op The operation to be used, e.g. modulate (multiply), add, subtract
-        @param
-        source1 The source of the first alpha value to the operation e.g. texture alpha
-        @param
-        source2 The source of the second alpha value to the operation e.g. current surface alpha
-        @param
-        arg1 Manually supplied alpha value (only required if source1 = LBS_MANUAL)
-        @param
-        arg2 Manually supplied alpha value (only required if source2 = LBS_MANUAL)
-        @param
-        manualBlend Manually supplied 'blend' value - only required for operations
-        which require manual blend e.g. LBX_BLEND_MANUAL
-        @see
-        setColourOperation
-        @note
-        This option has no effect in the programmable pipeline.
-        */
-        void setAlphaOperation(LayerBlendOperationEx op,
-            LayerBlendSource source1 = LBS_TEXTURE,
-            LayerBlendSource source2 = LBS_CURRENT,
-            Real arg1 = 1.0,
-            Real arg2 = 1.0,
-            Real manualBlend = 0.0);
-
-        /** Determines if this texture layer is currently blank.
-        @note
-        This can happen if a texture fails to load or some other non-fatal error. Worth checking after
-        setting texture name.
-        */
-        bool isBlank(void) const;
-
-        /** Sets this texture layer to be blank.
-        */
-        void setBlank(void);
-
-		/** Tests if the texture associated with this unit has failed to load.
-		*/
-		bool isTextureLoadFailing() const { return mTextureLoadFailed; }
-
-		/** Tells the unit to retry loading the texture if it had failed to load.
-		*/
-		void retryTextureLoad() { mTextureLoadFailed = false; }
-
-        // get texture effects in a multimap paired array
-        const EffectMap& getEffects(void) const;
-        // get the animated-texture animation duration
-        Real getAnimationDuration(void) const;
-
         /** Set the texture filtering for this unit, using the simplified interface.
         @remarks
             You also have the option of specifying the minification, magnification
@@ -906,120 +273,17 @@ namespace Ogre {
 		@see TextureUnitState::setTextureMipmapBias
 		*/
 		float getTextureMipmapBias(void) const { return mMipmapBias; }
-
-		/** Set the compositor reference for this texture unit state.
-		@remarks 
-			Only valid when content type is compositor.
-		@param compositorName the name of the compositor to reference
-		@param textureName the name of the texture to reference
-		@param mrtIndex the index of the wanted texture, if referencing an MRT
-		*/
-		void setCompositorReference(const String& compositorName, const String& textureName, size_t mrtIndex = 0);
-
-		/** Gets the name of the compositor that this texture referneces */
-		const String& getReferencedCompositorName() const { return mCompositorRefName; }
-		/** Gets the name of the texture in the compositor that this texture references */
-		const String& getReferencedTextureName() const { return mCompositorRefTexName; }
-		/** Gets the MRT index of the texture in the compositor that this texture references */ 
-		size_t getReferencedMRTIndex() const { return mCompositorRefMrtIndex; }
-	
-        /// Gets the parent Pass object
-        Pass* getParent(void) const { return mParent; }
-
-		/** Internal method for preparing this object for load, as part of Material::prepare*/
-		void _prepare(void);
-		/** Internal method for undoing the preparation this object as part of Material::unprepare*/
-		void _unprepare(void);
-		/** Internal method for loading this object as part of Material::load */
-		void _load(void);
-		/** Internal method for unloading this object as part of Material::unload */
-		void _unload(void);
-        /// Returns whether this unit has texture coordinate generation that depends on the camera
-        bool hasViewRelativeTextureCoordinateGeneration(void) const;
-
-        // Is this loaded?
-        bool isLoaded(void) const;
-        /** Tells the class that it needs recompilation. */
-        void _notifyNeedsRecompile(void);
-
-        /** Set the name of the Texture Unit State
-        @remarks
-            The name of the Texture Unit State is optional.  Its usefull in material scripts where a material could inherit
-            from another material and only want to modify a particalar Texture Unit State.
-        */
-        void setName(const String& name);
-        /// get the name of the Texture Unit State
-        const String& getName(void) const { return mName; }
-
-        /** Set the alias name used for texture frame names
-        @param name can be any sequence of characters and does not have to be unique           
-        */
-        void setTextureNameAlias(const String& name);
-        /** gets the Texture Name Alias of the Texture Unit.
-        */
-        const String& getTextureNameAlias(void) const { return mTextureNameAlias;}
-
-        /** Applies texture names to Texture Unit State with matching texture name aliases.
-            If no matching aliases are found then the TUS state does not change.
-        @remarks
-            Cubic, 1d, 2d, and 3d textures are determined from current state of the Texture Unit.
-            Assumes animated frames are sequentially numbered in the name.
-            If matching texture aliases are found then true is returned.
-
-        @param
-            aliasList is a map container of texture alias, texture name pairs
-        @param
-            apply set true to apply the texture aliases else just test to see if texture alias matches are found.
-        @return
-            True if matching texture aliases were found in the Texture Unit State.
-        */
-        bool applyTextureAliases(const AliasTextureNamePairList& aliasList, const bool apply = true);
-
-		/** Notify this object that its parent has changed */
-		void _notifyParent(Pass* parent);
-
-		/** Get the texture pointer for the current frame. */
-		const TexturePtr& _getTexturePtr(void) const;
-		/** Get the texture pointer for a given frame. */
-		const TexturePtr& _getTexturePtr(size_t frame) const;
-	
-		/** Set the texture pointer for the current frame (internal use only!). */
-		void _setTexturePtr(const TexturePtr& texptr);
-		/** Set the texture pointer for a given frame (internal use only!). */
-		void _setTexturePtr(const TexturePtr& texptr, size_t frame);
-
 protected:
         // State
-        /// The current animation frame.
-        unsigned int mCurrentFrame;
-
-        /// Duration of animation in seconds
-        Real mAnimDuration;            
-        bool mCubic; // is this a series of 6 2D textures to make up a cube?
-		
         TextureType mTextureType; 
         PixelFormat mDesiredFormat;
 		int mTextureSrcMipmaps; // Request number of mipmaps
 
-        unsigned int mTextureCoordSetIndex;
         UVWAddressingMode mAddressMode;
-        ColourValue mBorderColour;
-
-        LayerBlendModeEx mColourBlendMode;
-        SceneBlendFactor mColourBlendFallbackSrc;
-        SceneBlendFactor mColourBlendFallbackDest;
 
-        LayerBlendModeEx mAlphaBlendMode;
-        mutable bool mTextureLoadFailed;
         bool mIsAlpha;
 		bool mHwGamma;
 
-        mutable bool mRecalcTexMatrix;
-        Real mUMod, mVMod;
-        Real mUScale, mVScale;
-        Radian mRotate;
-        mutable Matrix4 mTexModMatrix;
-
         /// Texture filtering - minification
         FilterOptions mMinFilter;
         /// Texture filtering - magnification
@@ -1035,43 +299,6 @@ protected:
         bool mIsDefaultFiltering;
 		/// Binding type (fragment or vertex pipeline)
 		BindingType mBindingType;
-		/// Content type of texture (normal loaded texture, auto-texture)
-		ContentType mContentType;
-		/// The index of the referenced texture if referencing an MRT in a compositor
-		size_t mCompositorRefMrtIndex;
-
-        //-----------------------------------------------------------------------------
-        // Complex members (those that can't be copied using memcpy) are at the end to 
-        // allow for fast copying of the basic members.
-        //
-        vector<String>::type mFrames;
-		mutable vector<TexturePtr>::type mFramePtrs;
-        String mName;               // optional name for the TUS
-        String mTextureNameAlias;       // optional alias for texture frames
-        EffectMap mEffects;
-		///The data that references the compositor
-		String mCompositorRefName;
-		String mCompositorRefTexName;
-        //-----------------------------------------------------------------------------
-
-        //-----------------------------------------------------------------------------
-        // Pointer members (those that can't be copied using memcpy), and MUST
-        // preserving even if assign from others
-        //
-        Pass* mParent;
-        //-----------------------------------------------------------------------------
-
-
-        /** Internal method for calculating texture matrix.
-        */
-        void recalcTextureMatrix(void) const;
-
-		/** Internal method for ensuring the texture for a given frame is prepared. */
-		void ensurePrepared(size_t frame) const;
-		/** Internal method for ensuring the texture for a given frame is loaded. */
-		void ensureLoaded(size_t frame) const;
-
-
     };
 
 	/** @} */