public Texture2D LoadTexture2DFromResource(string embeddedFileName, Shader.Profile profile)
        {
            lock (this)
            {
                string    key = String.Format("Texture2D [Resource: {0}]", embeddedFileName);
                Texture2D tex = GetFromCache <Texture2D>(key);
                if (tex == null)
                {
                    tex = new Texture2D(embeddedFileName, GetResourceStream(embeddedFileName));
                    AddToCache(key, tex);
                }

                return(tex);
            }
        }
        public PixelShader LoadPixelShaderFromResource(string embeddedFileName, Shader.Profile profile)
        {
            lock (this)
            {
                string      key    = String.Format("Shader [Resource: {0} Profile: {1}]", embeddedFileName, profile);
                PixelShader shader = GetFromCache <PixelShader>(key);
                if (shader == null)
                {
                    shader = new PixelShader(embeddedFileName, GetResourceStream(embeddedFileName), profile);
                    AddToCache(key, shader);
                }

                return(shader);
            }
        }
        public PixelShader LoadPixelShaderFromFile(string fileName, Shader.Profile profile)
        {
            lock (this)
            {
                string      key    = String.Format("Shader [File: {0} Profile: {1}]", fileName, profile);
                PixelShader shader = GetFromCache <PixelShader>(key);
                if (shader == null)
                {
                    shader = new PixelShader(fileName, profile);
                    AddToCache(key, shader);
                }

                return(shader);
            }
        }
        public GeometryShader LoadGeometryShaderFromFile(string fileName, Shader.Profile profile, Type streamOutType)
        {
            lock (this)
            {
                string         key    = String.Format("Shader [File: {0} Profile: {1} StreamOutType: {2}]", fileName, profile, streamOutType);
                GeometryShader shader = GetFromCache <GeometryShader>(key);
                if (shader == null)
                {
                    shader = new GeometryShader(fileName, profile, streamOutType);
                    AddToCache(key, shader);
                }

                return(shader);
            }
        }
        public PixelShader LoadPixelShaderFromByteArray(string name, byte[] sourceCode, Shader.Profile profile)
        {
            lock (this)
            {
                string      key    = String.Format("Shader [ByteArray: {0} Profile: {1}]", name, profile);
                PixelShader shader = GetFromCache <PixelShader>(key);
                if (shader == null)
                {
                    using (var stream = new MemoryStream(sourceCode))
                    {
                        shader = new PixelShader(name, stream, profile);
                    }
                    AddToCache(key, shader);
                }

                return(shader);
            }
        }
        public GeometryShader LoadGeometryShaderFromResource(string embeddedFileName, Shader.Profile profile, Type streamOutType)
        {
            lock (this)
            {
                string         key    = String.Format("Shader [Resource: {0} Profile: {1} StreamOutType: {2}]", embeddedFileName, profile, streamOutType);
                GeometryShader shader = GetFromCache <GeometryShader>(key);
                if (shader == null)
                {
                    shader = new GeometryShader(embeddedFileName, GetResourceStream(embeddedFileName), profile, streamOutType);
                    AddToCache(key, shader);
                }

                return(shader);
            }
        }