Programming languages 创建着色器语言

Programming languages 创建着色器语言,programming-languages,shader,Programming Languages,Shader,个人是否有可能创建着色器编程语言?SK logic的第一条评论就是答案。您可以构建一个自定义着色语言编译器,该编译器采用自定义语言并将其“编译”为GLSL语言、HLSL或任何其他语言 这是一个现实的问题,因为现有的着色器方法可以创建着色器的组合爆炸,并使着色器实现变得非常受限和相互依赖。自定义着色器语言可以使这些依赖关系易于自动化,例如,对于多层效果或细节级别控制 您可以使着色器按“希望”的方式工作。如果需要,它还添加了一个完美的可移植层,完全抽象底层着色器语言 生成的着色器将转到驱动程序,该驱

个人是否有可能创建着色器编程语言?

SK logic的第一条评论就是答案。您可以构建一个自定义着色语言编译器,该编译器采用自定义语言并将其“编译”为GLSL语言、HLSL或任何其他语言

这是一个现实的问题,因为现有的着色器方法可以创建着色器的组合爆炸,并使着色器实现变得非常受限和相互依赖。自定义着色器语言可以使这些依赖关系易于自动化,例如,对于多层效果或细节级别控制

您可以使着色器按“希望”的方式工作。如果需要,它还添加了一个完美的可移植层,完全抽象底层着色器语言

生成的着色器将转到驱动程序,该驱动程序将执行其余操作,并为GPU编译本机代码


制作编译器相当简单。您所需要的只是一个(lexer和)解析器,从中构建一个抽象语法树,然后在树上进行几次遍历,以收集您需要提前了解的信息,并进行一些简单的常量expression优化,并从语法树生成着色器作为输出。最近我使用lemon作为解析器生成器。

为什么不呢?只要把你的语言编译成GLSL或其他语言就行了。那么“创建”另一个GLSL怎么样?如果你知道我的意思,首先,你知道如何用通用语言编写着色器吗?因为在你可以从头开始创建你的语言之前,你需要了解问题域,以及如何实现底层功能。@Ishihara,不,我不明白。你必须是一个由肥猫组成的委员会,才能推动新标准,迫使所有主要供应商向司机提供支持。然而,要让一个标准被所有人采纳,还需要十年甚至更长的时间。但是,如果你想为任何给定的特定平台(AMD、NVidia等)实现一种着色器语言——是的,你可以很容易地做到,只需破解现有的开源驱动程序(或者如果你的平台是NVidia,则编译成PTX)。