Создание шейдерного языка - PullRequest
0 голосов
/ 19 августа 2011

Возможно ли для человека создать язык программирования шейдера?

1 Ответ

1 голос
/ 04 января 2013

SK-логика имеет ответ прямо как первый комментарий.Вы можете создать собственный компилятор языка шейдинга, который берет собственный язык и «компилирует» его в язык GLSL, или HLSL, или что-нибудь еще.

Это реалистичный вопрос, потому что существующие методологии шейдеров могут создавать комбинаторные взрывы шейдеров иможет сделать вашу реализацию шейдера очень ограниченной и взаимозависимой.Пользовательский язык шейдеров может упростить автоматизацию этих зависимостей, например, для нескольких уровней эффектов или контроля уровня детализации.

Вы можете заставить шейдеры работать так, как вам «хочется»они работали.Также добавлен идеальный слой переносимости, который полностью абстрагирует базовый язык шейдеров, если это необходимо.

Сгенерированные шейдеры перейдут к драйверу, который возьмет его до конца и скомпилирует собственный код для графического процессора.

Сделать компилятор довольно просто.Все, что вам нужно, - это синтаксический анализатор (лексера и), создайте из него абстрактное синтаксическое дерево, затем сделайте несколько проходов по дереву, чтобы собрать информацию, которую нужно знать заранее, и выполнить некоторые простые оптимизации константных выражений, а также сгенерировать шейдеры в качестве вывода.из синтаксического дерева.В последнее время я использую лимон в качестве генератора парсеров.

...