NURBS на DirectX 11? - PullRequest
       22

NURBS на DirectX 11?

3 голосов
/ 04 октября 2010

Можете ли вы визуализировать NURBS на графическом процессоре с DirectX 11?Я читал о текущих тенденциях рендеринга поверхностей, подобных этим, но я ничего не вижу в NURBS.

Я нашел несколько связанных ссылок, но ничего твердого ... типа "Приближение подразделения Catmull-ClarkПоверхности с бикубическими пятнами »Чарльза Лупа и Скотта Шефера.

Ответы [ 2 ]

2 голосов
/ 20 октября 2011

В DirectX SDK есть 2 демонстрации; SubD10, SubD11 для DirectX 10/11, соответственно реализации методов, описанных в этой статье.

1 голос
/ 11 августа 2017

Быстрый ответ - нет.NURBS довольно сложны, и было бы сложно написать эффективный шейдер, который мог бы отображать их на GPU.Я думаю, что это возможно, но обычно это не делается, потому что есть лучший способ.

Лучшим способом является рендеринг патчей Bézier непосредственно на GPU, поскольку любой NURBS может быть преобразован в связанный набор патчей Bézier,Чтобы сгенерировать патчи, вы выполняете вставку узла в каждый узел, пока он не достигнет той же кратности, что и степень;например, на кубическом NURBS вы должны выполнять вставку узлов в каждый узел, пока каждый узел не станет тройным узлом.Контрольные точки NURBS можно затем рассматривать как подключенную сетку Безье.

С этим связана проблема, характерная для шейдеров: когда вы триангулируете свои патчи Безье, очень важно, чтобы патчи, которые имеют общую границу, также имели общий доступ.точно такие же настройки тесселяции, иначе на поверхности NURBS будут трещины из-за несоответствия тесселяции.Если вы используете фиксированные настройки тесселяции, это не проблема, но если вы используете тесселяцию, зависящую от вида, то вам нужно убедиться, что для каждой границы патча рассчитана независимая от вида «зависимая от вида» тесселяция, чтобы соседние патчи соответствовали друг другу.

...