Unity - керівництво матеріали і шейдери

Матеріали і шейдери

У Unity існує тісний взаємозв'язок між матеріалами (Materials) і шейдерами (Shaders). Шейдери містять код, що описує необхідні Ассет і властивості. Матеріали дозволяють налаштовувати властивості і призначати Ассет.

Unity - керівництво матеріали і шейдери
Шейдер реалізований через матеріал

Використовуйте пункт головного меню Assets-> Create-> Material або контекстне меню вікна Project (Project View) для створення нового матеріалу. Після створення, ви можете застосувати його до об'єкту і налаштувати все його властивості в інспектора (Inspector). Для застосування матеріалу до об'єкта, просто перетягніть його з вікна Project (Project View) на будь-який об'єкт в сцені (Scene) або ієрархії сцени (Hierarchy).

Установка властивостей матеріалу

Ви можете вибрати який саме шейдер буде використовуватися в конкретному матеріалі. Для цього просто розкрийте меню, що випадає Shader в інспектора і виберіть відповідний вам шейдер. Обраний вами шейдер буде задавати доступні для зміни властивості. Властивостями можуть виглядати як кольору, слайдери, текстури, числа або вектори. Якщо ви застосували матеріал до активного об'єкту в сцені. ви побачите, як в реальному часі будуть застосовуватися змінювані вами властивості.

Існує два способи привласнення текстури (Texture) властивості.

  1. За допомогою перетягування текстури з вікна Project на квадратну область властивості Texture
  2. За допомогою натискання кнопки Select і вибору текстури з появи списку

Існує дві опції розміщення текстури:

Масштабує текстуру уздовж різних осей.

Зрушує текстуру в різні боки.

  • Normal. Для об'єктів з непрозорими текстурами.
  • Transparent. Для частково прозорих об'єктів. Альфа-канал текстури визначає ступінь прозорості.
  • TransparentCutOut. Для об'єктів, у яких є тільки повністю непрозорі і повністю прозорі області, наприклад, паркани і огорожі.
  • Self-Illuminated. Для об'єктів, які мають випускають світло частини.
  • Reflective. Для об'єктів з непрозорими текстурами, які відображають кубічну текстуру (Cubemap) оточення.

Кожна з цих груп включає шейдери різної складності, від простого VertexLit. до складного Parallax Bumped with Specular. Для додаткової інформації про продуктивність шейдеров, будь ласка, прочитайте сторінку Використання і продуктивність вбудованих шейдеров.

Unity - керівництво матеріали і шейдери

  • FX. водні та світлові ефекти.
  • GUI. відображення графічного інтерфейсу користувача (GUI - це абревіатура для Graphic User Interface, що в перекладі означає "графічний інтерфейс користувача").
  • Nature. дерева і земна поверхня.
  • Particles. ефекти системи частинок.
  • Render FX. шейдери для скайбоксів.
  • Toon. отрисовка в мультиплікаційному стилі.

Крім того, деякі з цих шейдеров мають спеціальні версії для використання на мобільних пристроях.

Технічні деталі шейдера

У Unity є велика система шейдеров, що дозволяє змінювати зовнішній вигляд всієї внутрішньо графіки. Працює вона таким чином:

Зазвичай шейдер визначає формулу того, як повинен виглядати внутрішньо шейдинг. У будь-якому шейдера міститься набір властивостей (зазвичай текстури). Шейдери реалізовані через матеріали. які, в свою чергу, додані безпосередньо на окремі GameObject 'и. У матеріалі ви спершу вибираєте шейдер, потім задаєте використовувані шейдером властивості (зазвичай текстури та кольору, але можуть бути й інші).

Це досить складно, тому давайте подивимося на діаграму цього процесу:

Unity - керівництво матеріали і шейдери

У лівій частині схеми знаходиться Carbody Shader (шейдер кузова автомобіля). На його основі створено 2 матеріалу: Blue car Material (блакитний матеріал автомобіля) і Red car Material (червоний матеріал автомобіля). До кожного з цих матеріалів присвоєно по 2 текстури: Car Texture. визначальна основну текстуру автомобіля і a Color FX texture. Шейдер використовує ці властивості, щоб в кінцевому підсумку автомобіль виглядав пофарбованим фарбою з двома тонами. Це можна помітити в передній частині червоного автомобіля: звернені до камери області мають жовтий колір, а зі збільшенням кута проявляється ліловий колір. Матеріали Blue car і Red car додані до двом машинам. На колесах, вікнах і фарах немає ефекту зміни кольору, тому до них повинен бути застосований інший матеріал. У нижній частині схеми знаходиться Simple Metal Shader (простий металевий шейдер). Матеріал для коліс (Wheel Material) використовує цей шейдер. Врахуйте, що хоч тут і використовується та ж текстура Car Texture. підсумковий результат все одно відрізняється від того, що ми бачимо у кузова автомобіля, тому що в матеріалі використовується інший шейдер.

Якщо бути точніше, шейдер визначає:

  • Метод відтворення об'єкта. Включаючи різні методи, обрані в залежності від графічної карти кінцевого користувача.
  • Будь-які вершинні і фрагментного (піксельні) програми, які використовуються для відтворення.
  • Деякі текстурні властивості, які призначаються в матеріалах.
  • Кольорові і числові параметри, які призначаються в матеріалах.
  • Які текстури використовувати для відтворення.
  • Які кольори використовувати для відтворення.
  • Будь-які інші Ассет, які потрібні шейдеру для відтворення, наприклад, кубічні текстури (Cubemap'и).

Further reading