aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.ShaderTools/Program.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.ShaderTools/Program.cs')
-rw-r--r--Ryujinx.ShaderTools/Program.cs42
1 files changed, 42 insertions, 0 deletions
diff --git a/Ryujinx.ShaderTools/Program.cs b/Ryujinx.ShaderTools/Program.cs
new file mode 100644
index 00000000..3597f256
--- /dev/null
+++ b/Ryujinx.ShaderTools/Program.cs
@@ -0,0 +1,42 @@
+using Ryujinx.Graphics.Gal;
+using Ryujinx.Graphics.Gal.Shader;
+using System;
+using System.IO;
+
+namespace Ryujinx.ShaderTools
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ if (args.Length == 2)
+ {
+ GlslDecompiler Decompiler = new GlslDecompiler();
+
+ GalShaderType ShaderType = GalShaderType.Vertex;
+
+ switch (args[0].ToLower())
+ {
+ case "v": ShaderType = GalShaderType.Vertex; break;
+ case "tc": ShaderType = GalShaderType.TessControl; break;
+ case "te": ShaderType = GalShaderType.TessEvaluation; break;
+ case "g": ShaderType = GalShaderType.Geometry; break;
+ case "f": ShaderType = GalShaderType.Fragment; break;
+ }
+
+ using (FileStream FS = new FileStream(args[1], FileMode.Open, FileAccess.Read))
+ {
+ Memory Mem = new Memory(FS);
+
+ GlslProgram Program = Decompiler.Decompile(Mem, 0, ShaderType);
+
+ Console.WriteLine(Program.Code);
+ }
+ }
+ else
+ {
+ Console.WriteLine("Usage: Ryujinx.ShaderTools [v|tc|te|g|f] shader.bin");
+ }
+ }
+ }
+}