// Declaration helpers
        public void DeclareFields(
            ITypeHLSL type,
            Span span,
            string name,
            string prefix = "",
            string semantic = null,
            string suffix = "")
        {
            var val = type.CreateVal(name);

            var decls = DeclareBase(
                val,
                prefix,
                semantic,
                suffix + ";").ToArray();

            foreach (var d in decls)
            {
                span.WriteLine(d);
            }
        }
        private EmitValHLSL DeclareParam(
            string name,
            ITypeHLSL type,
            Span span,
            ref bool first,
            string semantic = null,
            string prefix = "")
        {
            var val = type.CreateVal(name);

            DeclareParam(
                val,
                prefix,
                semantic,
                ref first,
                span );

            return val;
        }