private void PrintEndBlocks() { string headerText = "End blocks"; OutputWriteLine($"{headerText}"); OutputWriteLine(new string('-', headerText.Length)); VcsProgramType vcsFiletype = shaderFile.vcsProgramType; if (vcsFiletype == VcsProgramType.VertexShader || vcsFiletype == VcsProgramType.GeometryShader || vcsFiletype == VcsProgramType.ComputeShader || vcsFiletype == VcsProgramType.DomainShader || vcsFiletype == VcsProgramType.HullShader) { OutputWriteLine($"{zframeFile.vsEndBlocks.Count:X02} 00 00 00 // end blocks ({zframeFile.vsEndBlocks.Count})"); OutputWriteLine(""); foreach (VsEndBlock vsEndBlock in zframeFile.vsEndBlocks) { OutputWriteLine($"block-ref {vsEndBlock.blockIdRef}"); OutputWriteLine($"arg0 {vsEndBlock.arg0}"); OutputWriteLine($"source-ref {vsEndBlock.sourceRef}"); OutputWriteLine($"source-pointer {vsEndBlock.sourcePointer}"); if (vcsFiletype == VcsProgramType.HullShader) { OutputWriteLine($"hs-arg {vsEndBlock.hullShaderArg}"); } OutputWriteLine($"{BytesToString(vsEndBlock.databytes)}"); OutputWriteLine(""); } } else { OutputWriteLine($"{zframeFile.psEndBlocks.Count:X02} 00 00 00 // end blocks ({zframeFile.psEndBlocks.Count})"); OutputWriteLine(""); foreach (PsEndBlock psEndBlock in zframeFile.psEndBlocks) { OutputWriteLine($"block-ref {psEndBlock.blockIdRef}"); OutputWriteLine($"arg0 {psEndBlock.arg0}"); OutputWriteLine($"source-ref {psEndBlock.sourceRef}"); OutputWriteLine($"source-pointer {psEndBlock.sourcePointer}"); OutputWriteLine($"has data ({psEndBlock.hasData0},{psEndBlock.hasData1},{psEndBlock.hasData2})"); if (psEndBlock.hasData0) { OutputWriteLine("// data-section 0"); OutputWriteLine($"{BytesToString(psEndBlock.data0)}"); } if (psEndBlock.hasData1) { OutputWriteLine("// data-section 1"); OutputWriteLine($"{BytesToString(psEndBlock.data1)}"); } if (psEndBlock.hasData2) { OutputWriteLine("// data-section 2"); OutputWriteLine($"{BytesToString(psEndBlock.data2[0..3])}");
public static (VcsProgramType, VcsPlatformType, VcsShaderModelType) ComputeVCSFileName(string filenamepath) { VcsProgramType vcsProgramType = VcsProgramType.Undetermined; VcsPlatformType vcsPlatformType = VcsPlatformType.Undetermined; VcsShaderModelType vcsShaderModelType = VcsShaderModelType.Undetermined; string[] fileTokens = Path.GetFileName(filenamepath).Split("_"); if (fileTokens.Length < 4) { throw new ShaderParserException($"Filetype type unknown or not supported {filenamepath}"); } vcsProgramType = fileTokens[^ 1].ToLower() switch