Существует много языков затенения, построенных на основе GLSL или HLSL - какие проблемы они обычно решают и какие полезные улучшения они делают?

8

Фью, это был длинный титул.

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

Как своего рода исследование, я задаю этот вопрос, так как мое собственное знание таких языков является крошечным, если не сказать больше - я знаю язык затенения bgfx и ShaderLab Unity, но я действительно не знаю, чего они достигают - или почему - относительный новичок в компьютерной графике.

В качестве альтернативы, каким будет ваш список пожеланий для такого языка затенения? На данный момент у меня есть некоторая совместимость между версиями, необязательные «скрытые» входы, которые позволяют легко получать доступ к текстурам со смещением в пикселях, размеру изображения и т. Д. И, вероятно, проходят - скажем, для двухпроходного размытия по Гауссу.

Мысли?

Llamageddon
источник
4
Это больше похоже на обсуждение на форуме, чем на конкретный вопрос. Этот сайт лучше всего работает с вопросами, на которые можно ответить одним фактическим ответом. Часть "что такое ваш список пожеланий" определенно не подходит для сайта SE.
Дэн Халм
1
Вы можете прийти в коробку Cornell в нашем чате и начать дискуссию
трещотка урод

Ответы:

2

Я думаю, будет справедливым сказать, что причина в том, что существует так много нишевых вариаций GLSL / HLSL / Cg / whatnot, в том, что ни один язык программирования не является и никогда не будет универсальным для всех инструментов. Для разных задач требуются разные инструменты, поэтому иногда стоит разработать собственный инструмент, если он окупится в долгосрочной перспективе.

Фондовая GLSL сама по себе в значительной степени непригодна. Он даже не приобрел большой стабильности между версиями, поэтому для программы, нацеленной более чем на одну версию OpenGL, какая-то предварительная обработка является обязательной. HLSL немного более стабилен во всех версиях, но, опять же, если нацелено более чем на одну версию D3D, потребуется некоторая работа, чтобы добиться хорошей переносимости.

Люди обычно делают то же самое, что и вы, например, добавляя поддержку основных функций программирования, таких как модули и унифицированный синтаксис между версиями, или даже переносимость между различными API (GL / D3D) без необходимости переписывать код шейдера. Более сложные вещи включают в себя полноценные системы материалов или такие вещи, как создание шейдерных программ на лету .

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

glampert
источник
Мне любопытно - что это за языки? Я знаю, что существуют специфичные для движка системы, такие как шейдерные системы Unity или UE4, а также некоторые научные исследования, такие как Spark , но я ничего не знаю о текущем использовании в этом пространстве.
Натан Рид
@NathanReed, возможно, на данный момент Apple's Metal является одним из самых заметных, но я не стал
вдаваться
О хорошо Хотя металл не на вершине HLSL или GLSL; это основной язык шейдинга для графических процессоров Apple, который компилируется непосредственно в микрокод HW (я полагаю, через собственный бэкэнд LLVM).
Натан Рид