Відповідь 1:

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

Наприклад, щоб зробити плоску стіну, ви могли пройти в шести вершинах, які відповідають точкам на двох трикутниках. Однак деякі з цих даних є зайвими, оскільки трикутники ділять ребро, тому точки на ребрі передаються удвічі. Це марно, а відходи - погано.

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

Після створення примітивів вони перетворюються вершиновим шейдером, а потім обрізаються на екран. Вони можуть бути розбиті на декілька примітивів або навіть повністю відкинуті, будучи повністю поза екраном, або через невдале відсікання.

Нарешті, для примітивів, які встигають пройти стадію відсічення, вони потім розсипаються на фрагменти. Це процес сказати: взяття трикутника та опрацювання всіх пікселів † екрану, який він охоплює. Це фрагменти, і розповсюджувач растроїдів допоміжно інтерполював усі різні параметри від примітивних вершин.

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

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

† Примітка. Фрагмент не точно такий, як піксель. Вони все ще не пройшли деякі тести, такі як тестування на глибину, трафарет або альфа, щоб стати видимими пікселями, а антиаліазинг створює більше фрагментів, ніж пікселі, і складає їх усереднене разом. Однак у більшості простих випадків їх можна вважати рівнозначними. Тільки пам’ятайте, що вони не зовсім однакові.