EMZETT.
Увійти

Шейдери

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

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

Подробиці

Важливі види:

ШейдерЗавдання
Вершинний шейдерОбробляє кожну вершину моделі: положення в просторі, зміщення, анімація
Фрагментний/піксельний шейдерОбчислює колір кожного пікселя: текстура, світло, відбиття, прозорість
Геометричний/тесселяційний шейдерСтворює або уточнює геометрію (більше трикутників з небагатьох)
Обчислювальний шейдер (compute)Загальні обчислення на GPU (фізика, ШІ, фільтри зображень)
Шейдер трасування променівРозрахунок променів світла для реалістичного освітлення

Послідовність у графічному конвеєрі: дані моделі → вершинний шейдер → растеризація (трикутники перетворюються на пікселі) → фрагментний шейдер → зображення.

Мови: GLSL (OpenGL), HLSL (DirectX, Unity), WGSL (WebGPU), Metal Shading Language (Apple), SPIR-V (Vulkan). Візуально: Shader Graph (Unity), редактор матеріалів (Unreal).

Приклад (фрагментний шейдер GLSL):

void main() {
    // колір із текстури, затемнений залежно від світла
    vec3 color = texture(tex, uv).rgb * max(dot(normal, lightDir), 0.0);
    output = vec4(color, 1.0);
}

Застосування:

  • Освітлення, тіні, вода, дим, шкіра, волосся, туман.
  • Постобробка: розмиття (bloom), корекція кольору, згладжування.
  • Художні стилі: cel shading (вигляд коміксу), піксельні шейдери, ефекти голограми.
  • Не лише ігри: кіно (шейдери рендеру), обчислення, ШІ.

Вартість: складні шейдери знижують частоту кадрів. «Компіляція шейдерів» під час першого запуску змушує ігри довго завантажуватися (кеш шейдерів).

Див. також: Ігровий рушій, Unity, 3D-моделювання