Пример #1
0
        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());
        }
Пример #2
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);
        }