public void WriteFactory(string[] files) { TemplateGroup cppGroup = new Antlr4.StringTemplate.TemplateGroupFile(Program.TemplatesDir + "/factoryTemplateCpp.stg"); StringBuilder mapping = new StringBuilder(); StringBuilder includes = new StringBuilder(); foreach (var filepath in files) { string filenameWithoutExt = Path.GetFileNameWithoutExtension(filepath); StringTemplate mapTemplate = cppGroup.GetInstanceOf("shaderMap"); mapTemplate.Add("key", filenameWithoutExt); mapping.Append(mapTemplate.Render() + '\n'); StringTemplate inclTemplate = cppGroup.GetInstanceOf("include"); inclTemplate.Add("filename", filenameWithoutExt); includes.Append(inclTemplate.Render() + '\n'); } StringTemplate factoryCppTemplate = cppGroup.GetInstanceOf("factory"); factoryCppTemplate.Add("includes", includes.ToString()); factoryCppTemplate.Add("mapping", mapping.ToString()); string filename = Program.CppOutputDir + "/KiotoShaders"; System.IO.File.WriteAllText(filename + ".cpp", factoryCppTemplate.Render()); TemplateGroup hGroup = new Antlr4.StringTemplate.TemplateGroupFile(Program.TemplatesDir + "/factoryTemplateH.stg"); StringTemplate factoryHTemplate = hGroup.GetInstanceOf("factory"); System.IO.File.WriteAllText(filename + ".h", factoryHTemplate.Render()); }
public void WriteHeaders(ShaderOutputContext ctx, string filename) { TemplateGroup group = new Antlr4.StringTemplate.TemplateGroupFile(Program.TemplatesDir + "/cppTemplate.stg"); string constantBuffers = WriteConstantBuffers(ctx, group); string constantBufferNames = WriteConstantBuffersNames(ctx, group); string constants = WriteRootConstants(ctx, group); string textureSets = WriteTextureSets(ctx, group); string bindings = WriteBindings(ctx, group); string vertexLayouts = WriteVertexLayouts(ctx, group); string programNames = WriteProgramNames(ctx, group); string structs = WriteStructures(group, ctx.Structures); structs += WriteStructures(group, ctx.ConstantBuffers); StringTemplate headerTemplate = group.GetInstanceOf("header"); headerTemplate.Add("name", filename); headerTemplate.Add("structs", structs); headerTemplate.Add("cbuffers", constantBuffers); headerTemplate.Add("cbNames", constantBufferNames); headerTemplate.Add("constants", constants); headerTemplate.Add("texSets", textureSets); headerTemplate.Add("shaderProgs", bindings); headerTemplate.Add("vertexLayout", vertexLayouts); headerTemplate.Add("shaderProgNames", programNames); headerTemplate.Add("shaderPath", "Shaders/" + filename + ".hlsl"); string outDirHlsl = Program.CppOutputDir + "/sInp/"; string filenameOut = outDirHlsl + filename + ".h"; System.IO.File.WriteAllText(filenameOut, headerTemplate.Render()); }
/// <summary> /// initialize template /// </summary> private static Antlr4.StringTemplate.Template InitializeTemplate() { var templateName = TemplatePath + "XmlScript.stg"; Antlr4.StringTemplate.TemplateGroup templateGroup = new Antlr4.StringTemplate.TemplateGroupFile(templateName); templateGroup.TrackCreationEvents = true; Antlr4.StringTemplate.Template template = templateGroup.GetInstanceOf("XmlScript"); return template; }
/// <summary> /// initialize template /// </summary> private static Antlr4.StringTemplate.Template InitializeTemplate() { var templateName = TemplatePath + "XmlScript.stg"; Antlr4.StringTemplate.TemplateGroup templateGroup = new Antlr4.StringTemplate.TemplateGroupFile(templateName); templateGroup.TrackCreationEvents = true; Antlr4.StringTemplate.Template template = templateGroup.GetInstanceOf("XmlScript"); return(template); }
public void WriteHeaders(ShaderOutputGlobalContext ctx) { TemplateGroup structCppGroup = new Antlr4.StringTemplate.TemplateGroupFile(Program.TemplatesDir + "/cppTemplate.stg"); TemplateGroup commonGroup = new Antlr4.StringTemplate.TemplateGroupFile(Program.TemplatesDir + "/commonStructuresTemplate.stg"); var structWithoutDuplicates = RemoveDuplicates(ctx.Structures); string cppStructures = CppHeaderWriter.WriteStructures(structCppGroup, structWithoutDuplicates); StringTemplate commonTemplate = commonGroup.GetInstanceOf("cppHeader"); commonTemplate.Add("structs", cppStructures); string cppFilename = Program.CppOutputDir + "/CommonStructures.h"; System.IO.File.WriteAllText(cppFilename, commonTemplate.Render()); TemplateGroup structHlslGroup = new Antlr4.StringTemplate.TemplateGroupFile(Program.TemplatesDir + "/hlslTemplate.stg"); string hlslStructures = HlslHeadersWriter.WriteStructures(structHlslGroup, structWithoutDuplicates); StringTemplate commonHlslTemplate = commonGroup.GetInstanceOf("hlslHeader"); commonHlslTemplate.Add("structs", hlslStructures); string hlslFilename = Program.HlslOutputDir + "/CommonStructures.hlsl"; System.IO.File.WriteAllText(hlslFilename, commonHlslTemplate.Render()); }