示例#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());
        }
        void WriteShader(string shaderName, ShaderModel shader)
        {
            WriteLine($"// {shaderName} {shader.Type}_{shader.MajorVersion}_{shader.MinorVersion} Has PRES {shader.Preshader != null}");
            var funcName = shaderName;
            var text     = "";

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