Tessellation vs Geometry Shader


11

Виправте мене, якщо я помиляюся, але як Geometry Shader, так і Tessellation Shader повинні створювати вершини в графічному трубопроводі. Що я хотів би знати, як вони відрізняються і коли я повинен використовувати один над іншим?


6
Мені здається, що я лінивий написати повну відповідь, але суть її полягає в тому, що шейдер "Геометрія" є дуже малим, фіксованим рівнем посилення, де етапи Тесселяції - для масового, динамічного посилення багатокутника
MickLH

Відповіді:


14

Насправді ні, "робота" шейдера геометрії (GS) є первинною оцінкою.

Шейдери для геометрії можуть завищувати, але вони обмежені а) верхніми межами в процесі обробки кількості вихідних елементів і б) виконанням в межах одного шейдера ... звичайно, шейдер інстанції зменшує другий випуск, але загальна шейдер для геометрії є більш ефективний при первісному оцінюванні та / або ціннісному інтерполяції, ніж вони при тесселяції.

Для порівняння, шейдери тесселяції (TS) були введені спеціально для виконання ущільнення геометрії, тому вони добре працюють, надійні до постійно розширюється масиву алгоритмів (призначений каламбур) і вони менш обмежені вихідними обмеженими буферами.

Даніель Ракос має хорошу статтю про еволюцію GS / TS: Історія апаратури

Коли застосовувати кожен, це випадок "використовувати правильний інструмент для роботи", і ось як: Створіть чорновий конвеєр без теселятора, щоб отримати примітиви правильно оцінювати в VS / GS / FS. Окремо застосуйте тесселяцію на основі огляду або сцени, а потім вставте TS перед GS, щоб ущільнити примітиви, які потім передаються вашій вже розробленій GS. Якщо ви хочете спробувати інший ТС, то побудуйте альтернативу та поміняйте її в конвеєр ... Ви навіть можете використовувати встановлений GS для динамічного вибору потрібного ТС на основі властивостей примітиву!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.