using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnitTestSharpHLSL; using System.IO; namespace UnitTestSharpHLSLDisassembler { class Program { static string GetTextFromFile(string filename) { if (!File.Exists(filename)) { throw new Exception(String.Format("{0} could not read file (does it exist?)", filename)); } using (StreamReader sr = File.OpenText(filename)) { return sr.ReadToEnd(); } } static int Main(string[] args) { if (args.Count() != 1) { Console.WriteLine("" + "Will spit out the disassembly of a given shader file, along with how many instruction slots " + "are currently being used for it. " + "\n\n" + "Usage: UnitTestSharpHLSLDisassembler.exe MyShader.hlsl"); return 1; } string shaderText; try { shaderText = GetTextFromFile(args[0]); } catch (Exception e) { Console.WriteLine(e.Message); return 1; } Renderer renderer = new Renderer(); var compiledShader = renderer.CreateShader(shaderText, "FromCommandLine", null); Console.WriteLine(new SharpDX.D3DCompiler.ShaderBytecode(compiledShader).Disassemble(SharpDX.D3DCompiler.DisassemblyFlags.None)); return 0; } } }