Example #1
0
        public override EffectContent Process(EffectContent input, string filename, ContentProcessorContext context)
        {
            try
            {
                //Passthrough and verification
                foreach (var technique in input.Techniques)
                {
                    foreach (var pass in technique.Passes)
                    {
                        engenious.Graphics.EffectPass compiledPass = new engenious.Graphics.EffectPass(pass.Name);

                        foreach (var shader in pass.Shaders)
                        {
                            try
                            {
                                var tmp = new Shader(shader.Key, System.IO.File.ReadAllText(shader.Value));
                                tmp.Compile();
                                compiledPass.AttachShader(tmp);
                            }
                            catch (Exception ex)
                            {
                                PreprocessMessage(context, shader.Value, ex.Message, BuildMessageEventArgs.BuildMessageType.Error);
                            }
                        }

                        compiledPass.Link();
                        compiledPass.Apply();
                        foreach (var attr in pass.Attributes)
                        {
                            compiledPass.BindAttribute(attr.Key, attr.Value);
                        }
                    }
                }
                return(input);
            }
            catch (Exception ex)
            {
                PreprocessMessage(context, System.IO.Path.GetFileName(filename), ex.Message, BuildMessageEventArgs.BuildMessageType.Error);
            }
            return(null);
        }
 internal EffectPassParameterCollection(EffectPass pass)
 {
     this.pass     = pass;
     parameterList = new List <EffectPassParameter> ();
     parameters    = new Dictionary <string, EffectPassParameter> ();
 }