значения вершинных и фрагментных шейдеров в webgl - PullRequest
0 голосов
/ 05 ноября 2011

Я новичок в webgl. Мне было интересно, как генерируются значения вершинного и фрагментного шейдеров.Я видел несколько примеров и мог видеть огромный массив этих значений. Не могу понять, как эти значения генерируются. Есть ли инструменты для генерации этих значений.Я что-то пропустил?Ни один учебник не объяснял, как создать эти значения шейдера.Любая помощь в этом приветствуется.

Ответы [ 2 ]

3 голосов
/ 05 ноября 2011

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

[1,0, 2,0, 3,0, 0,5, 0,5, 1,0, 0,0, 0,0]

Это может зависеть от вершинырасположение, положение, координата текстуры и нормаль для одной вершины, например:

Позиция: (x: 1.0, y: 2.0, z: 3.0) Texcoord: (u: 0.5, v: 0.5) Нормальный: (x: 1.0, y: 0.0, z: 0.0)

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

Я немного написал некоторое времяВернемся к тому, как вы говорите WebGL интерпретировать эти значения, но я не уверен, насколько точно вы знаете о трехмерной геометрии, так что это может быть слишком высокий уровень.Некоторые из ранних уроков Learning WebGL охватывают это более подробно:

Урок 1 , Урок 2

0 голосов
/ 08 ноября 2011

Просто используйте какой-нибудь инструмент 3D-моделирования, понимаете, например, Blender, Maya, 3D Studio Max, Google Sketch up, на самом деле не имеет значения.

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

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

...