Я пытаюсь разработать понимание уровня графического конвейера высокого уровня. Одна вещь, которая не имеет для меня большого смысла, - это то, почему существует шейдер Geometry. Шейдеры Tessellation и Geometry, похоже, делают то же самое для меня. Может ли кто-нибудь объяснить мне, что делает шейдер Geometry отличным от тесселяционного шейдера, который оправдывает его существование?Разница между тесселяционными шейдерами и геометрическими шейдерами
ответ
Тесселяционный шейдер предназначен для переменного подразделения. Важной частью является информация о смежности, поэтому вы можете правильно сглаживать и не заканчивать разрывами. Вы можете сделать некоторое ограниченное подразделение с геометрическим шейдером, но на самом деле это не так.
Геометрические шейдеры работают с примитивностью. Например, если вам нужно делать материал для каждого треугольника (например, this), сделайте это в геометрическом шейдере. Я слышал о том, как производится экструзия теней. Существует также «консервативная растеризация», где вы можете расширить границы треугольника, чтобы каждый пересеченный пиксель получал фрагмент. Примеры довольно специфичны для приложений.
Да, они также могут генерировать больше геометрии, чем вход, но они не шкала хорошо. Они отлично работают, если вы хотите нарисовать частицы и превратить точки в очень простую геометрию. Я много раз реализовывал маршевые кубы, используя геометрические шейдеры. Отлично работает с преобразованием обратной связи, чтобы сохранить полученную сетку.
Передача обратной связи также использовалась с геометрическим шейдером для выполнения дополнительных вычислительных операций. Один особенно полезный механизм заключается в том, что он выполняет сжатие потока для вас (сильно сокращает его объем вывода, так что в результирующем массиве нет пробелов).
Другая важная вещь, которую предоставляет геометрический шейдер, - это маршрутизация в слоистые объекты рендеринга (массивы текстур, грани куба, несколько видовых экранов), что-то, что должно выполняться на основе примитива. Например, вы можете отображать теневые карты кубов для точечных огней за один проход, дублируя и проецируя геометрию 6 раз на каждую грань куба.
Не совсем полный ответ, но, надеюсь, дает суть различий.
Смотрите также:
Это, безусловно, помогает. Кроме того, я уверен, что, когда я все больше вникаю в графику, этот ответ будет иметь все больше смысла, поэтому я вернусь к нему. Благодаря! –