哦,那是一个很长的标题。

无论哪种方式,我都在问这个问题,因为我喜欢考虑各种各样的事情,而我发现实际上并没有简单,开放源代码层位于GLSL之上,即使只是添加诸如include或常用功能之类的简单内容。至少可以说是微不足道的-我知道bgfx的着色语言和Unity的ShaderLab,但我真的不知道它们的成就-或为什么-成为计算机图形学的相对新手。您对像这样的着色语言的愿望清单是什么?到目前为止,我的产品包括版本之间的某些兼容性,可选的“隐藏”输入,这些输入可轻松访问像素偏移处的纹理或图像大小等,并可能通过-例如两次通过高斯模糊。 br />有想法吗?

评论

这听起来更像是论坛讨论,而不是特定问题。该站点最适合那些可以用单个事实答案回答的问题。 “您的愿望清单是什么”部分绝对不适合SE网站。

您可以来到康奈尔大学聊天室进行讨论

#1 楼

我认为可以公平地说,GLSL / HLSL / Cg /之类的利基变化如此之多的原因是,没有一种编程语言也不会是一种适合所有工具的语言。不同的问题需要不同的工具,因此,如果从长远来看将有回报,有时值得开发定制的工具。

Stock GLSL本身非常不可用。它甚至在各个版本之间都没有获得太大的稳定性,因此对于针对多个OpenGL版本的程序,必须进行某种预处理。 HLSL在各个版本之间都比较稳定,但是,如果要针对多个D3D版本,则需要做一些工作才能获得良好的可移植性。您说过,就像增加了对基本编程功能的支持,例如模块和跨版本的统一语法,甚至跨不同API(GL / D3D)的可移植性,而无需重写着色器代码。更复杂的事物包括完全成熟的材质系统或诸如动态生成着色器程序之类的事物。

将来,着色语言可能会变得更好,更通用,并结合当今通常是手工编写的事物作为核心功能。新的GCN架构就是一个标志。因此,从现在起,着色语言将立即可用,但自定义构建的解决方案将永远不会消失,因为您可以概括的只有这么多。

评论


$ \ begingroup $
我很好奇-像这样的语言在那里?我知道有一些特定于引擎的引擎,例如Unity或UE4的着色器系统,以及一些学术研究性的东西,例如Spark,但是我不知道该领域当前使用的其他东西。
$ \ endgroup $
–内森·里德(Nathan Reed)
2015年12月15日在1:22



$ \ begingroup $
@NathanReed,到目前为止,Apple的Metal可能是最著名的之一,但是我没有研究太多细节...
$ \ endgroup $
–glampert
2015年12月15日在2:42

$ \ begingroup $
哦,好。但是,Metal不在HLSL或GLSL之上。它是Apple GPU的主要着色语言,可以直接编译为硬件微代码(通过我认为是专有的LLVM后端)。
$ \ endgroup $
–内森·里德(Nathan Reed)
2015年12月15日4:42