Я зробив свою справедливу частку програмування 3D-ігор для мого (колишнього) роботодавця, а також у власному користувальницькому двигуні для моїх власних інді-ігор.
Спочатку я почав з Direct3D 9 і D3DX9, які майже все зробили для мене, і зовсім не вимагали від мене думки щодо шейдерів.
Після цього я написав свої перші шейдери Direct3D 9, але в основному використовував один дуже простий шейдер для всього, що робив.
Під час останньої ітерації мого ігрового двигуна я перейшов до Direct3D 11 і з цим створив безліч шейдерів. Я знімав графічний графічний процесор, обчислював частки GPU, багато освітлення та ефектів після обробки, все це в GPU. Дійсно класні речі.
Поки що я використовував лише шейдери вершин та пікселів / фрагментів. Незважаючи на те, що ще багато чого я не робив, я вважаю, що я добре знаю, що роблять шейдери вершин і пікселів / фрагментів, і як це все вписується у весь 3D конвеєр.
Догнавши новітні розробки, я дуже зацікавився новими етапами шейдерів. Тобто шейдер для геометрії та ще новіші шейдери Халла та домена.
Я ніколи не використовував ці етапи, але, наскільки я знаю, шейдер "Геометрія", якщо він включений, запускається після вершинного шейдера, один раз для кожної перетвореної вершини (або один раз за примітиву?) І дозволяє відкинути вершини (і примітиви?) , і створити нові (що, напевно, повернеться до початку трубопроводу?).
Я здогадуюсь, що головним використанням шейдера геометрії було б програмне створення геометрії в GPU. Поширеним використанням буде створення квадратиків білборда на основі однієї вершини, але я не візуалізую багато інших загальних сценаріїв, крім генерування фракталів та інших речей, які можна генерувати на 100% програмно.
Що стосується шейдерів Hull і Domain, то, схоже, вони пов'язані з tessellation (створення більш гладких поверхонь із шорстких поверхонь?), І їх потрібно використовувати разом або зовсім не використовувати. Термін "патч" також, здається, є поширеним тут.
Хтось би не хотів би пояснити мені, на практиці, для чого призначені ці нові етапи шейдерних процесів, як вони вписуються в тривимірний конвеєр і в яких випадках я повинен розглянути можливість їх використання?