Відмінності між версіями «Шейдер.Види»
Рядок 2: | Рядок 2: | ||
Програмовані шейдери гнучкі та ефективні. Складні на вигляд поверхні можуть бути візуалізовані за допомогою простих геометричних форм. Наприклад, шейдери можуть бути використані для малювання поверхні із тривимірної керамічної плитки на абсолютно плоскій поверхні. | Програмовані шейдери гнучкі та ефективні. Складні на вигляд поверхні можуть бути візуалізовані за допомогою простих геометричних форм. Наприклад, шейдери можуть бути використані для малювання поверхні із тривимірної керамічної плитки на абсолютно плоскій поверхні. | ||
+ | |||
+ | '''Потреба в шейдерах''' | ||
+ | |||
+ | У програмних графічних движках весь ланцюжок рендеринга - від визначення видимих частин сцени до накладення текстури - писалася розробником гри. У цей ланцюжок можна було включати власні нестандартні відеоефекти. Але з появою відеоакселераторів розробник виявився обмежений тим набором ефектів, який закладений в апаратне забезпечення. | ||
+ | |||
+ | Для того, щоб складати складні відеоефекти з атомарних операцій, і були винайдені шейдери. Попередниками шейдеров були процедурна генерація текстур (широко застосовувалася в Unreal для створення анімованих текстур води і вогню) і мультитекстурирование (на ньому був заснований мову шейдеров, що застосовувався в Quake 3). Але і ці механізми не забезпечують такої гнучкості, як шейдери. | ||
+ | |||
'''Типи шейдерів''' | '''Типи шейдерів''' |
Версія за 10:28, 17 січня 2012
Шейдер (англ. Shader) — це програма для одного із ступенів графічного конвеєра, що використовується в тривимірній графіці для визначення остаточних параметрів об'єкта чи зображення. Вона може включати в себе довільної складності опис поглинання та розсіювання світла, накладення текстури, віддзеркалення і заломлення, затінення, зміщення поверхні і ефекти пост-обробки.
Програмовані шейдери гнучкі та ефективні. Складні на вигляд поверхні можуть бути візуалізовані за допомогою простих геометричних форм. Наприклад, шейдери можуть бути використані для малювання поверхні із тривимірної керамічної плитки на абсолютно плоскій поверхні.
Потреба в шейдерах
У програмних графічних движках весь ланцюжок рендеринга - від визначення видимих частин сцени до накладення текстури - писалася розробником гри. У цей ланцюжок можна було включати власні нестандартні відеоефекти. Але з появою відеоакселераторів розробник виявився обмежений тим набором ефектів, який закладений в апаратне забезпечення.
Для того, щоб складати складні відеоефекти з атомарних операцій, і були винайдені шейдери. Попередниками шейдеров були процедурна генерація текстур (широко застосовувалася в Unreal для створення анімованих текстур води і вогню) і мультитекстурирование (на ньому був заснований мову шейдеров, що застосовувався в Quake 3). Але і ці механізми не забезпечують такої гнучкості, як шейдери.
Типи шейдерів
В даний час шейдери поділяються на чотири типи: вершинні, геометричні, параллаксні і фрагментні (піксельні).
Вершинні шейдери (Vertex Shader) Вершинний шейдер оперує даними вершин Багатогранників. До таких даних, зокрема, відносяться координати вершини в просторі, текстурні координати, тангенс-вектор, вектор бінормалі, вектор нормалі. Вершинний шейдер може бути використаний для видового і перспективного перетворення вершин, генерації текстурних координат, розрахунку освітлення і т. д.
Геометричні шейдери (Geometry Shader) Геометричний шейдер, на відміну від вершинного, здатний обробити не лише одну вершину, але і цілий примітив. Це може бути відрізок (дві вершини) і трикутник (три вершини), а за наявності інформації про суміжних вершинах (adjacency) може бути оброблено до шести вершин для трикутного примітиву. Крім того геометричний шейдер здатний генерувати примітиви «на льоту», не залучаючи при цьому центрального процесора. Вперше почав використовуватися на відеокартах Nvidia серії 8.
Фрагментні (Піксельні) шейдери (Pixel Shader) Фрагментний Шейдер працює з фрагментами зображення. Під фрагментом зображення в даному випадку розуміється піксель, якому поставлено у відповідність деякий набір атрибутів, таких як колір, глибина, текстурні координати. Фрагментний Шейдер використовується на останній стадії графічного конвеєра для формування фрагмента зображення.
Шейдери були розроблені для того, щоб мати змогу відтворювати складні відеоефекти з атомарних операцій. Попередниками шейдерів були процедурна генерація текстур (що широко застосовувалася в Unreal для створення анімованих текстур води і вогню) і мультитекстуровання (на ньому була заснована мова шейдерів, що застосовувався в Quake 3) . Але і ці механізми не забезпечують такої гнучкості, як шейдери.