недавно я пытаюсь реализовать алгоритм для генерации лозы в реальном времени. Я знаю, как это сделать на процессоре, но я хочу использовать для этого GPU. Я думал о шейдере геометрии, но похоже, что шейдер геометрии выполняется в масштабе примитива, а это означает, что он будет выполнять одни и те же функции для каждого примитива, чего я не ожидаю.
Вот концептуально, как работает мой алгоритм выращивания виноградной лозы. выберите любую точку на сетке объекта в качестве корневой точки, алгоритм выращивания виноградной лозы генерирует серию точек (представляющих виноградную лозу) в соответствии с предыдущими полученными точками. На положение точек влияют такие факторы, как гравитация, прилипание и расстояние до граней треугольника. Каждая точка должна быть на той же стороне, что и нормаль треугольной грани.
Как я могу сделать это на GPU? Большое спасибо.
glm
для таких типов данных, как точки, будет очень легко преобразовать его в GLSL. Теоретически. Однако вычисление расстояния от точки до всей сетки, вероятно, не произойдет в шейдере. Какой геометрической формы вы хотите, чтобы лоза росла? Стена, столб, дерево? Сложность этой геометрии повлияет на то, какие части алгоритма вы можете поместить в шейдеры. - person Andreas Haferburg   schedule 23.06.2013