public virtual void Visit(MaterialGeneratorContext context)
 {
     Surface.Visit(context);
     MicroSurface.Visit(context);
     Diffuse.Visit(context);
     DiffuseModel.Visit(context);
     Specular.Visit(context);
     SpecularModel.Visit(context);
 }
        public override void Accept(ShaderGeneratorContext context)
        {
            base.Accept(context);

            Surface.Accept(context);
            MicroSurface.Accept(context);
            Diffuse.Accept(context);
            DiffuseModel.Accept(context);
            Specular.Accept(context);
            SpecularModel.Accept(context);
        }