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

举报
ShaderJoy 发表于 2022/06/11 22:25:42 2022/06/11
【摘要】 译文正文 当我开始图像编程时,像 HLSL 和 GLSL 这样的着色语言在游戏开发中还不流行,着色器是用汇编直接开发出来的。 当 HLSL 被引入时,我记得我们为了好玩,试图通过手工生成更短、更紧凑的汇...

译文正文

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

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

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

文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。

原文链接:panda1234lee.blog.csdn.net/article/details/125234607

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。