Shading (моделі освітлення)
Історично ж в 3D-графіку під шейдинга (зафарбовуванням) малися на увазі способи зафарбовування полігонів.
Існує два основних типи зафарбовування об'єктів:
1. Плоске зафарбовування
2. Плавне зафарбовування
• Зафарбовування по Гуро
• Зафарбовування по Фонгу
розфарбування полігону
Зафарбування полігону відбувається у всіх його точках, встановлюючи потрібний колір. Пікселі полігону відвідуються в порядку черги, зазвичай по рядках розгортки зліва направо.

На малюнку зображені два полігону, межі яких заповнюються кольором. На малюнку відзначені екранні координати кожної вершини. Ординати найнижчій і найвищій точок позначені Ycurr, Ybottom. Тому на малюнку зафарбування почнеться з Ycurr = Ybottom (на малюнку це одна точка), далі при Ycurr = Ybottom + 1. для всіх X в цій області [Xleft, Xright] поміщається потрібний колір в кожен піксель Pixel [Xcurr, Ycurr] і т . Д. Таким чином, цей метод реалізується у вигляді звичайного подвійного циклу:
Розглянемо докладніше кожен метод.
1.Плоское зафарбовування (Flat Shading)
При плоскому зафарбовуванні полігони як би виділяються і це пов'язано з обчисленням одного і того ж кольору для кожного пікселя на межі. Хоча, наприклад, ви можете задати вершині окремий колір, як атрибут. Як же це вплине на зафарбовування цієї вершини? Виявляється, при плоскому зафарбовуванні завжди використовується тільки перший колір межі, і з цього при застосуванні зафарбовування полігон буде здаватися суцільним. Через це можна команду FindColor винести за початок циклу. При цьому вплив диффузионная і дзеркальна освітленість мають слабкий ефект. Такий метод зафарбовування в іграх не застосовується.
У Direct3d9 плоске зафарбовування встановлюється за допомогою команди:
У OpenGL плоске зафарбовування встановлюється так:
2. Плавне зафарбовування
При плавному зафарбовуванні відбувається згладжування ребер між гранями. Зазвичай обчислюється колір в більшій кількості точок кожній грані. Існує два види плавного зафарбовування: зафарбування Гуро і зафарбування Фонга.
1. Зафарбування Гуро (Gourand Shading)
При цьому методі для кожного пікселя обчислюється окреме значення кольору c. Для отримання кольору пікселя x:
З обчислювальної точки зору зафарбування Гуро обходитися набагато дорожче, ніж плоске зафарбовування.
У Direct3d9 зафарбовування Гуро встановлюється за допомогою команди:
У OpenGL зафарбовування Гуро встановлюється так:
2. Зафарбування Фонга (Phong Shading)
Більшої реалістичності можна досягти за допомогою цього методу. Він полягає в апроксимації нормалі до поверхні для кожного пікселя. При роботі з зафарбовуванням Фонга, ми знаходимо нормаль для кожної точки на межі об'єкта, і для знаходження кольору в неї застосовуємо модель зафарбовування. Обчислення нормалі для кожної точки межі обчислюється за допомогою інтерполяції між нормалями полігону. Для отримання кольору точки x на межі:
У Direct3d9 зафарбовування Фонга встановлюється за допомогою команди:
Що таке Shading (Моделі Освітлення)?