如何阅读着色器的汇编代码(一)

译文正文

当我开始图像编程时,像 HLSL 和 GLSL 这样的着色语言在游戏开发中还不流行,着色器是用汇编直接开发出来的。 当 HLSL 被引入时,我记得我们为了好玩,试图通过手工生成更短、更紧凑的汇编代码来击败编译器,这并不难。 从那时起,着色器编译技术就有了巨大的进步,现在,在大多数情况下,手工生成更好的汇编代码是相当困难的(而且着色器已经变得如此庞大和复杂,无论如何,它不再是划算的了)。

即使现在没有人直接用汇编编写着色器,对于图形程序员来说,能够阅读和理解编译器产生的着色器汇编(ISA)代码仍然是有用的。 首先,它帮助你理解编译器是如何解释高级着色器指令的。 有些指令,如 tan()整数除法 不能直接映射到硬件,可以扩展成许多汇编指令。 其次,它可以帮助理解 GPU 如何工作,如何请求数据,执行分支,写入输出等。 第三,当实际的着色器代码不可用时,它可以帮助调试着色器。 虽然我们通常不再手动调优着色器的汇编代码,但理解它可以帮助我们做出更好的高级着色器编写决策,这可以导致更高性能的汇编代码。 最后,对我个人来说,有时不带抽象层的阅读代码,能对代码的作用有一个清晰的理解,并尽可能直捣黄龙地接近它的本质。

在这篇博文中,我们将讨论一点着色器汇编,并提供一些如何阅读它的指引。 本讨论主要集中在 DirectX 和 HLSL ,类似的想法将适用于其他 API /着色语言。 同样在例子中,我使用的是 AMD 的着色器

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值