Фью, это был длинный титул.
В любом случае, я задаю этот вопрос, так как мне нравится думать о разных вещах, и мне пришло в голову, что на самом деле нет простых слоев с открытым исходным кодом поверх GLSL, даже если только добавить простые вещи, такие как включает или часто используемые функции.
Как своего рода исследование, я задаю этот вопрос, так как мое собственное знание таких языков является крошечным, если не сказать больше - я знаю язык затенения bgfx и ShaderLab Unity, но я действительно не знаю, чего они достигают - или почему - относительный новичок в компьютерной графике.
В качестве альтернативы, каким будет ваш список пожеланий для такого языка затенения? На данный момент у меня есть некоторая совместимость между версиями, необязательные «скрытые» входы, которые позволяют легко получать доступ к текстурам со смещением в пикселях, размеру изображения и т. Д. И, вероятно, проходят - скажем, для двухпроходного размытия по Гауссу.
Мысли?
Ответы:
Я думаю, будет справедливым сказать, что причина в том, что существует так много нишевых вариаций GLSL / HLSL / Cg / whatnot, в том, что ни один язык программирования не является и никогда не будет универсальным для всех инструментов. Для разных задач требуются разные инструменты, поэтому иногда стоит разработать собственный инструмент, если он окупится в долгосрочной перспективе.
Фондовая GLSL сама по себе в значительной степени непригодна. Он даже не приобрел большой стабильности между версиями, поэтому для программы, нацеленной более чем на одну версию OpenGL, какая-то предварительная обработка является обязательной. HLSL немного более стабилен во всех версиях, но, опять же, если нацелено более чем на одну версию D3D, потребуется некоторая работа, чтобы добиться хорошей переносимости.
Люди обычно делают то же самое, что и вы, например, добавляя поддержку основных функций программирования, таких как модули и унифицированный синтаксис между версиями, или даже переносимость между различными API (GL / D3D) без необходимости переписывать код шейдера. Более сложные вещи включают в себя полноценные системы материалов или такие вещи, как создание шейдерных программ на лету .
Языки затенения, вероятно, будут становиться все лучше и более общими в будущем, и в их число будут входить такие вещи, которые сегодня обычно представляют собой основные функции. Новая архитектура GCN является признаком этого. Таким образом, через некоторое время языки шейдинга станут более удобными в использовании, но нестандартные решения никогда не исчезнут, потому что вы можете обобщать лишь так много.
источник