public static string Decompile(ShaderModel shaderModel, string entryPoint = null)
        {
            if (shaderModel.Type == ShaderType.Effect)
            {
                return(EffectHLSLWriter.Decompile(shaderModel.EffectChunk));
            }
            var hlslWriter = new HlslWriter(shaderModel, false, entryPoint);

            return(hlslWriter.Decompile());
        }
        public static string Decompile(ShaderModel shaderModel)
        {
            var hlslWriter = new HlslWriter(shaderModel);

            using (var stream = new MemoryStream())
            {
                hlslWriter.Write(stream);
                stream.Position = 0;
                using (var reader = new StreamReader(stream, Encoding.UTF8))
                {
                    return(reader.ReadToEnd());
                }
            }
        }
Exemple #3
0
        void WriteShader(StateBlob blob)
        {
            var shader = blob.Shader;

            WriteLine($"// {ShaderNames[blob]} {shader.Type}_{shader.MajorVersion}_{shader.MinorVersion} Has PRES {shader.Preshader != null}");
            var funcName = ShaderNames[blob];
            var text     = "";

            if (blob.Shader.Type == ShaderType.Expression)
            {
                text = ExpressionHLSLWriter.Decompile(blob.Shader, funcName);
            }
            else
            {
                text = HlslWriter.Decompile(blob.Shader);
                text = text.Replace("main(", $"{funcName}(");
            }
            WriteLine(text);
        }