Какое правильное расширение файла для шейдеров GLSL? - PullRequest
123 голосов
/ 22 июня 2011

Я изучаю glsl-шейдинг и сталкиваюсь с различными форматами файлов. Я видел людей, дающих свои вершинные и фрагментные шейдеры .vert и .frag расширения. Но я также видел расширения .vsh и .fsh и даже оба шейдера вместе в одном файле .glsl. Поэтому мне интересно, существует ли стандартный формат файла или какой путь является «правильным»?

Ответы [ 5 ]

81 голосов
/ 22 июня 2011

Стандартного расширения файлов для шейдеров GLSL не существует. Наиболее распространенными из них являются, вероятно, .vert и .frag, поскольку это расширения, которые 3D Labs использовали в некоторых своих инструментах. Но это касается любой формы стандартного расширения.

80 голосов
/ 23 октября 2014

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

Однако glslang , ссылочный компилятор / валидатор Khronos GLSL, использует следующие расширения, чтобы определить, какой типшейдера, для которого предназначен файл:

  • .vert - вершинный шейдер
  • .tesc - шейдер управления тесселяцией
  • .tese - тесселяцияоценочный шейдер
  • .geom - геометрический шейдер
  • .frag - фрагментный шейдер
  • .comp - вычислительный шейдер
16 голосов
/ 22 июня 2011

Идентификация типа файла по расширению является специфической особенностью Windows.Все другие операционные системы используют разные подходы: MacOS X сохраняет тип файла в специальной структуре метаданных в записях файловой системы.Большинство * nixes идентифицируют файлы, проверяя их внутреннюю структуру по базе данных известных «магических байтов»;однако текстовые редакторы используют расширение.

В любом случае, источники GLSL такие же, как и любой другой исходный файл программы: простой текст, и это их тип файла.

Расширение вы можете выбрать по своему усмотрению.Я использую следующие названия:

  • ts.glsl
  • gs.glsl
  • vs.glsl
  • fs.glsl

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

7 голосов
/ 12 апреля 2014

Как уже упоминали другие, нет правильного ответа в самом строгом смысле. Следует отметить, что Sublime (подтверждено для v2 и v3) также ожидает .vert и .frag для выделения и проверки синтаксиса.

0 голосов
/ 31 мая 2013

Есть два способа написания шейдеров.

Вы можете хранить содержимое вершинного шейдера и фрагментного шейдера в переменной char * и компилировать, связывать и присоединять шейдер к программе.

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

Таким образом, соглашение об именах, такое как .vert / .frag, .vsdr / .fsdr и т. д.действителен, если вы знаете, как его читать ...

...