当前位置: 首页 > news >正文

RenderDoc 增加 DXBC to HLSL 的 shader viewer


目的

便于后续抓帧出来的 DXBC 转为 HLSL,提高可读性


原因

编写的原因,因为按照网上的大佬的BLOG,发现某个 etnlGD/HLSLDecompiler 上的工具使用上是有问题的 (有可能是以前的 render doc 版本没有问题,而我现在是在 render doc 1.3 测试的,发现不行)

后来我们公司的另一个项目组的方木君TA大佬,各种测试、折腾后,说是这个 cmd_Decompiler.exe 工具没有处理文件和目录是否存在的问题


问题

如下,是 Renderdoc DirectX ByteCode 转 HLSL 插件 修复说明,DXBC/HLSL 逆向反汇编 在 etnlGD/HLSLDecompiler 基础上修改的内容
在这里插入图片描述

但是我自己在 RenderDoc 1.3 测试过,还是有错误


解决

然后就是和 方木君TA大佬,一起修复这个问题,如下,再次修改为
在这里插入图片描述

就是增加了一句代码: mk "%~dp0temp.hlsl"

然后我将这个 fork 了一个仓库,二次修改了一下,上传到 github 上了:javelinlin/HLSLDecompiler


RenderDoc 中的配置方法

Tools/Settings
在这里插入图片描述
Settings/Shader Viewer/Add

  • Name : DXBC->HLSL
  • Tool Type : Custom Tool
  • Excutable: hlsl_decompiler_wrapper.bat 的绝对目录
  • Command Line : {input_file} {output_file} 注意两个参数之间有空格,因为是 bat 的参数
  • Input/Output : DXBCHLSL
    在这里插入图片描述
    在这里插入图片描述

RenderDoc 中应用

配置好 RenderDoc 的 DXBC->HLSL 之后
就是使用了,非常简单

Pipeline State/VS/View
在这里插入图片描述

Disassembly type : DXBC
在这里插入图片描述

Disassembly type : 修改为: HLSL (DXBC->HLSL)
在这里插入图片描述

Edit 就更加单,不用额外的选择
在这里插入图片描述
在这里插入图片描述


References

  • etnlGD/HLSLDecompiler - 里面有 dxbc to hlsl 的工具
    • Renderdoc DirectX ByteCode 转 HLSL 插件 修复说明,DXBC/HLSL 逆向反汇编 - 里面也是使用了:etnlGD/HLSLDecompiler 工具,但是我在 render doc 1.3 中测试,发现这种方法还是不行
  • javelinlin/HLSLDecompiler - 在 etnlGD/HLSLDecompiler fork 后修改了

相关文章:

  • docker 的 Dockerfile 简单使用
  • 分布式ID(2):雪花算法生成ID
  • GL Logger和CANFDLog-OTL-128两款记录仪都是如何实现高效的报文录制的?
  • 跟着cherno手搓游戏引擎【6】ImGui和ImGui事件
  • MyBatis 使用报错:org.xml.sax.SAXParseException 元素内容必须由格式正确的字符数据或标记组成
  • OpenHarmony 应用开发入门 (一、环境搭建及第一个Hello World)
  • 数据结构之二叉搜索树
  • 尚硅谷Nginx高级配置笔记
  • 集成开发环境(IDE)介绍
  • 【Vue3】3-2 : 组件的概念及组件的基本使用方式
  • 机器人持续学习基准LIBERO系列6——获取并显示实际深度图
  • 用Python优雅地写出数学表达式的LaTeX代码
  • c# 自定义 滑块TrackBar
  • 树莓派4B +Ubuntu20.04+ROS1的使用(2)
  • 4、python列表Lists
  • [case10]使用RSQL实现端到端的动态查询
  • 2017年终总结、随想
  • 5、React组件事件详解
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Angular2开发踩坑系列-生产环境编译
  • C++类的相互关联
  • Electron入门介绍
  • HashMap剖析之内部结构
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • learning koa2.x
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 你真的知道 == 和 equals 的区别吗?
  • 配置 PM2 实现代码自动发布
  • 算法之不定期更新(一)(2018-04-12)
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 06-01 点餐小程序前台界面搭建
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​虚拟化系列介绍(十)
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • ###STL(标准模板库)
  • #pragma once
  • #宝哥教你#查看jquery绑定的事件函数
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (十一)图像的罗伯特梯度锐化
  • (算法二)滑动窗口
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)socket Aio demo
  • .htaccess配置常用技巧
  • .NET BackgroundWorker
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • []指针
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [Android Studio 权威教程]断点调试和高级调试
  • [AutoSar]BSW_Com02 PDU详解