public Texture2DSampler(Texture texture)
 {
     Texture = texture;
 }
        private ColorSampler ReadColorSampler(XElement profileElement, XElement effectElement, string xpath)
        {
            XElement shaiderElement = effectElement.XPathSelectElement(xpath, _nsMgr);

            if (shaiderElement.Name.LocalName == "color")
            {
                return new PlaneColorSampler(shaiderElement == null ? Vector3.Zero : shaiderElement.Value.ToVec3());
            }
            else if (shaiderElement.Name.LocalName == "texture")
            {
                string textureSamplerID = shaiderElement.Attribute("texture").Value;
                string textureSurfcaeID = profileElement.XPathSelectElement(string.Format("c:newparam[@sid='{0}']/c:sampler2D/c:source", textureSamplerID), _nsMgr).Value;
                string textureImageID = profileElement.XPathSelectElement(string.Format("c:newparam[@sid='{0}']/c:surface/c:init_from", textureSurfcaeID), _nsMgr).Value;
                string texturePath = _document.XPathSelectElement(string.Format("//c:library_images/c:image[@id='{0}']/c:init_from", textureImageID), _nsMgr).Value.Trim('/');

                Texture texture = new Texture(texturePath);
                _scene.Textures.Add(texture);

                return new Texture2DSampler(texture);
            }

            throw new Exception("Unknown surface shader");
        }