public Effect(ShaderSection effect)
        {
            this.device = GlobalRenderSettings.Instance.Device;

            this.effect    = effect;
            this.paramData = effect.FindChild <PramChunk>();

            this.Shaders = new List <ShaderInfo>();
            List <ShaderChunk> shaderChunks = effect.GetChildrenOfType <ShaderChunk>();

            foreach (ShaderChunk chunk in shaderChunks)
            {
                List <FileChunk> files = chunk.GetChildrenOfType <FileChunk>();
                foreach (FileChunk file in files)
                {
                    if (file.Name.EndsWith("vpo"))
                    {
                        var shaderInfo = new VertexShaderInfo(file);
                        this.Shaders.Add(shaderInfo);
                        this.VertexShaderInfo = shaderInfo;
                        this.VertexShader     = shaderInfo.Shader;
                    }
                    else
                    {
                        var shaderInfo = new PixelShaderInfo(file);
                        this.Shaders.Add(shaderInfo);
                        this.PixelShaderInfo = shaderInfo;
                        this.PixelShader     = shaderInfo.Shader;
                    }
                }
            }

            this.Path = effect.ResourcePath;
            this.Name = System.IO.Path.GetFileNameWithoutExtension(this.Path);

            InitVertexConstantSetters();
            InitPixelConstantSetters();
        }
        public Effect(ShaderSection effect)
        {
            this.device = GlobalRenderSettings.Instance.Device;

            this.effect = effect;
            this.paramData = effect.FindChild<PramChunk>();

            this.Shaders = new List<ShaderInfo>();
            List<ShaderChunk> shaderChunks = effect.GetChildrenOfType<ShaderChunk>();
            foreach (ShaderChunk chunk in shaderChunks)
            {
                List<FileChunk> files = chunk.GetChildrenOfType<FileChunk>();
                foreach (FileChunk file in files)
                {
                    if (file.Name.EndsWith("vpo"))
                    {
                        var shaderInfo = new VertexShaderInfo(file);
                        this.Shaders.Add(shaderInfo);
                        this.VertexShaderInfo = shaderInfo;
                        this.VertexShader = shaderInfo.Shader;
                    }
                    else
                    {
                        var shaderInfo = new PixelShaderInfo(file);
                        this.Shaders.Add(shaderInfo);
                        this.PixelShaderInfo = shaderInfo;
                        this.PixelShader = shaderInfo.Shader;
                    }
                }
            }

            this.Path = effect.ResourcePath;
            this.Name = System.IO.Path.GetFileNameWithoutExtension(this.Path);

            InitVertexConstantSetters();
            InitPixelConstantSetters();
        }