Відмінності між версіями «Шейдер.Види»
Рядок 15: | Рядок 15: | ||
Фрагментний Шейдер працює з фрагментами зображення. Під фрагментом зображення в даному випадку розуміється піксель, якому поставлено у відповідність деякий набір атрибутів, таких як колір, глибина, текстурні координати. Фрагментний Шейдер використовується на останній стадії графічного конвеєра для формування фрагмента зображення. | Фрагментний Шейдер працює з фрагментами зображення. Під фрагментом зображення в даному випадку розуміється піксель, якому поставлено у відповідність деякий набір атрибутів, таких як колір, глибина, текстурні координати. Фрагментний Шейдер використовується на останній стадії графічного конвеєра для формування фрагмента зображення. | ||
+ | |||
+ | Вершинний шейдер | ||
+ | |||
+ | Виконує обробку геометрії — змінює параметри вершини такі як позицію, текстурні координати, колір вершин. Також може виконувати обчислення освітлення. Допустима кількість команд може досягати однієї-двох сотень. Приклад фрагмента коду: | ||
+ | |||
+ | vs.2.0 | ||
+ | dcl_position v0 | ||
+ | dcl_texcoord v3 | ||
+ | m4x4 oPos, v0, c0 | ||
+ | mov oT0, v3 |
Версія за 11:47, 16 січня 2012
Шейдер (англ. Shader) — це програма для одного із ступенів графічного конвеєра, що використовується в тривимірній графіці для визначення остаточних параметрів об'єкта чи зображення. Вона може включати в себе довільної складності опис поглинання та розсіювання світла, накладення текстури, віддзеркалення і заломлення, затінення, зміщення поверхні і ефекти пост-обробки.
Програмовані шейдери гнучкі та ефективні. Складні на вигляд поверхні можуть бути візуалізовані за допомогою простих геометричних форм. Наприклад, шейдери можуть бути використані для малювання поверхні із тривимірної керамічної плитки на абсолютно плоскій поверхні.
Типи шейдерів
В даний час шейдери поділяються на чотири типи: вершинні, геометричні, параллаксні і фрагментні (піксельні). Вершинні шейдери (Vertex Shader)
Вершинний шейдер оперує даними вершин Багатогранників. До таких даних, зокрема, відносяться координати вершини в просторі, текстурні координати, тангенс-вектор, вектор бінормалі, вектор нормалі. Вершинний шейдер може бути використаний для видового і перспективного перетворення вершин, генерації текстурних координат, розрахунку освітлення і т. д. Геометричні шейдери (Geometry Shader)
Геометричний шейдер, на відміну від вершинного, здатний обробити не лише одну вершину, але і цілий примітив. Це може бути відрізок (дві вершини) і трикутник (три вершини), а за наявності інформації про суміжних вершинах (adjacency) може бути оброблено до шести вершин для трикутного примітиву. Крім того геометричний шейдер здатний генерувати примітиви «на льоту», не залучаючи при цьому центрального процесора. Вперше почав використовуватися на відеокартах Nvidia серії 8. Фрагментні (Піксельні) шейдери (Pixel Shader)
Фрагментний Шейдер працює з фрагментами зображення. Під фрагментом зображення в даному випадку розуміється піксель, якому поставлено у відповідність деякий набір атрибутів, таких як колір, глибина, текстурні координати. Фрагментний Шейдер використовується на останній стадії графічного конвеєра для формування фрагмента зображення.
Вершинний шейдер
Виконує обробку геометрії — змінює параметри вершини такі як позицію, текстурні координати, колір вершин. Також може виконувати обчислення освітлення. Допустима кількість команд може досягати однієї-двох сотень. Приклад фрагмента коду:
vs.2.0 dcl_position v0 dcl_texcoord v3 m4x4 oPos, v0, c0 mov oT0, v3