2013-10-15 4 views
1

У меня есть необходимость реплицировать тесселяцию GPU на CPU (т. Е. Получить те же uvw-координаты на стороне процессора, что и я получаю на GPU от тесселятора). Причина для этого довольно сложна, но просто поставил у меня алгоритм, который хранит данные на одну точку тесселяции, и для его вычисления в первую очередь мне нужны координаты uvw на CPU.Хороший ресурс по шаблону subdivisonation tessellation

Я гугл много для точных деталей картины тесселяции, но я только нахожу очень туманные тексты об этом говорить в общем природе, лучший из которых это: http://fgiesen.wordpress.com/2011/09/06/a-trip-through-the-graphics-pipeline-2011-part-12/

Является ли причина для отсутствие текстов на этом, что это зависит от поставщика, или я просто не нашел, что не нашел правильную страницу?

Меня интересуют тексты как для реализации OpenGL, так и для DX11, если они отличаются.

ответ

2

Я также очень интересовался tessellation, и конкретно subdivision surfaces некоторое время назад. Это очень сложная тема. Он был исследован с начала 70-х годов, и он все еще находится в исследовании.

Неясно, хотите ли вы повторно реализовать весь конвейер для тесселяции шейдеров (который, как мне кажется, потребуются годы для одного программиста) или только один алгоритм разбиения (или даже алгоритм, который не является подразделением).

Во всяком случае, есть некоторые ссылки о подразделении:

Теории

Обычно мы реализуем уточняющие поверхности в тесселяции шейдерах, используя Catmull–Clark subdivision surface algorithm. Вы можете найти некоторые документы от оригинальных авторов в Google. Существует главный один:

"Recursively generated B-spline surfaces on arbitrary topological meshes" (1978 год, PDF)

Ближе к закодировать

Проверить документы этих крутых парней из Microsoft Research:

  • Charles Loop - (BTW, автор another subdiv algorithm), чисто математический материал
  • Hugues Hoppe - Ищите «прогрессивный м eshes ", гораздо ближе к программному обеспечению

Еще ближе к коду.

Вы можете найти некоторые библиотеки в Интернете. Когда я искал какое-то время назад, было несколько десятков библиотек, которые реализовали подразделение на процессоре. Я не очень-то выглядел, потому что меня интересовала реализация GPU. Ключевое слово для поиска - «subdivision lib» =)

Наиболее интересным является Pixar's OpenSubdiv. Взгляните на их код.

Также посмотрите на образец «Тестирование на основе NVIDIA» (DirectX, OpenGL). Они внедрили tessellation pipelne в шейдеры Vertex и Geometry.

Надеюсь, это поможет!

+0

Спасибо! Я думаю, это может быть именно то, что я искал. Я не хочу переопределять весь конвейер тесселяции. Что я хочу - это реализовать только целочисленный паттерн разделения, и я также могу ограничиться такими вещами, как «только факторы силы тесселяции 2» и т. Д. – Torandi

Смежные вопросы