2011-08-19 111 views
0

个体是否可以创建着色器编程语言?创建着色器语言

+0

为什么不呢?只需将你的语言编译成GLSL或其他任何东西。 –

+0

那么如何创建另一个GLSL,如果你知道我的意思 – Ishihara

+0

首先,你知道如何用通用语言编写着色器吗?因为在从头开始创建语言之前,您需要了解问题域以及如何实现基础功能。 – Marcin

回答

1

作为第一条评论,SK逻辑的答案就在那里。您可以构建一个自定义着色语言编译器,它采用自定义语言并将其“编译”为GLSL语言或HLSL或其他任何语言。

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

可以使着色器的工作他们的方式,你“想”,他们的工作。如果需要,它还增加了一个完美的可移植性层,完全抽象底层着色语言。

生成的着色器会去这需要它的方式休息并编译本地代码的GPU驱动程序。

制作编译器非常简单。所有你需要的是一个(词法分析器)解析器,从它构建一个抽象语法树,然后在树上做几个遍以收集你需要知道的信息,做一些简单的常量表达式优化,并生成着色器作为输出从语法树中。我最近使用柠檬作为解析器生成器。