学习编写着色器的最佳工具是什么?

14

我最近在做一些DirectX 10的工作,现在想要转向使用DirectX 11和Shader Model 5.0。我以前写过一些非常简单的着色器,现在想拓展自己的视野并尝试编写更复杂的着色器。我的问题有点多方面:

  1. 目前最好的编写着色器的工具是什么?我只用过Visual Studio和一些FX Composer——也就是打开看看而已。

  2. 显卡品牌是否影响可以编写的着色器类型?

    • 我问这个问题的原因是Nvidia似乎拥有更好的工具,而ATI似乎取消了RenderMonkey。我没有看到它的任何替代品,我错了吗?
  3. 类似于问题#1,如果您只想编写DirectX着色器而不是特定于某个厂商的着色器,是否可以使用跨厂商的工具?

    • 如果需要按厂商定制,Nvidia通常是否拥有更好的工具?我现在真的很想使用ATI,因为它们似乎是性价比最高的选择(而且我有一个AMD主板),但我还是有所犹豫,因为我大多数时候都是用显卡进行编程。

shader-playground.timjones.io 是着色器的godbolt。www.shadertoy.com 是现代的RenderMonkey。 - v.oddou
1个回答

8

你的最终目标是什么?如果你只想了解一些关于着色的知识,或者你是一位艺术家或技术艺术家,那么1. FX Composer和RenderMonkey都是很好的选择。

如果你是一名程序员,想要制作图形引擎,那么1. 你应该使用文本编辑器,因为着色器只是图形引擎中的一个小部分。在某个较低级别的复杂度之后,着色器常量和某些纹理需要使用类似C ++的语言动态创建。

2. 现在显卡品牌不会影响你能够编写的着色器类型。

3. 跨厂商的工具也可以使用。

虽然你的问题没有涉及这个问题,但我觉得我应该提到:如今着色器只是图形引擎的一小部分,随着重点转向延迟工作直到“后处理”使用“计算”,它们的作用将很快减弱。着色器很快通常只输出抽象术语,如反射率和法线,而不是颜色。它对艺术的相关性将会下降。


2
有什么参考资料可以支持上述说法吗? - Paul-Jan
感谢您的反馈。我是一名程序员,艺术技能相对较弱,但我想尝试一些凸起映射和基本着色器编程等概念。您提到了一个文本编辑器,当然可以使用,但每次想查看简单的着色器时关闭并启动程序有些麻烦。是否有更好的解决方法? - Darkenor
@Paul-Jan,我所写的是作为游戏行业内部人士的建议。当我所说的内容成为常识时,它将成为共识,也就没有必要像我这样的人再提供这样的建议了。维基百科最终会记录所有这些事情,但需要五年左右的时间才能在事件结束后完成记录。 - user223264
我想我可以编写一个自定义应用程序,让您动态加载着色器。我只是希望我不必这样做。 :( - Darkenor
我使用修改后的C模式的emacs编辑器来编辑着色器,它提供了高亮和缩进等功能,但是它只是一个相当标准的编辑器。您认为您的标准代码编辑器缺少什么? - Arelius
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接