Матеріали і шейдери
У Unity існує тісний взаємозв'язок між матеріалами (Materials) і шейдерами (Shaders). Шейдери містять код, що описує необхідні Ассет і властивості. Матеріали дозволяють налаштовувати властивості і призначати Ассет.
Шейдер реалізований через матеріалВикористовуйте пункт головного меню Assets-> Create-> Material або контекстне меню вікна Project (Project View) для створення нового матеріалу. Після створення, ви можете застосувати його до об'єкту і налаштувати все його властивості в інспектора (Inspector). Для застосування матеріалу до об'єкта, просто перетягніть його з вікна Project (Project View) на будь-який об'єкт в сцені (Scene) або ієрархії сцени (Hierarchy).
Установка властивостей матеріалу
Ви можете вибрати який саме шейдер буде використовуватися в конкретному матеріалі. Для цього просто розкрийте меню, що випадає Shader в інспектора і виберіть відповідний вам шейдер. Обраний вами шейдер буде задавати доступні для зміни властивості. Властивостями можуть виглядати як кольору, слайдери, текстури, числа або вектори. Якщо ви застосували матеріал до активного об'єкту в сцені. ви побачите, як в реальному часі будуть застосовуватися змінювані вами властивості.
Існує два способи привласнення текстури (Texture) властивості.
- За допомогою перетягування текстури з вікна Project на квадратну область властивості Texture
- За допомогою натискання кнопки Select і вибору текстури з появи списку
Існує дві опції розміщення текстури:
Масштабує текстуру уздовж різних осей.
Зрушує текстуру в різні боки.
- Normal. Для об'єктів з непрозорими текстурами.
- Transparent. Для частково прозорих об'єктів. Альфа-канал текстури визначає ступінь прозорості.
- TransparentCutOut. Для об'єктів, у яких є тільки повністю непрозорі і повністю прозорі області, наприклад, паркани і огорожі.
- Self-Illuminated. Для об'єктів, які мають випускають світло частини.
- Reflective. Для об'єктів з непрозорими текстурами, які відображають кубічну текстуру (Cubemap) оточення.
Кожна з цих груп включає шейдери різної складності, від простого VertexLit. до складного Parallax Bumped with Specular. Для додаткової інформації про продуктивність шейдеров, будь ласка, прочитайте сторінку Використання і продуктивність вбудованих шейдеров.
- FX. водні та світлові ефекти.
- GUI. відображення графічного інтерфейсу користувача (GUI - це абревіатура для Graphic User Interface, що в перекладі означає "графічний інтерфейс користувача").
- Nature. дерева і земна поверхня.
- Particles. ефекти системи частинок.
- Render FX. шейдери для скайбоксів.
- Toon. отрисовка в мультиплікаційному стилі.
Крім того, деякі з цих шейдеров мають спеціальні версії для використання на мобільних пристроях.
Технічні деталі шейдера
У Unity є велика система шейдеров, що дозволяє змінювати зовнішній вигляд всієї внутрішньо графіки. Працює вона таким чином:
Зазвичай шейдер визначає формулу того, як повинен виглядати внутрішньо шейдинг. У будь-якому шейдера міститься набір властивостей (зазвичай текстури). Шейдери реалізовані через матеріали. які, в свою чергу, додані безпосередньо на окремі GameObject 'и. У матеріалі ви спершу вибираєте шейдер, потім задаєте використовувані шейдером властивості (зазвичай текстури та кольору, але можуть бути й інші).
Це досить складно, тому давайте подивимося на діаграму цього процесу:
У лівій частині схеми знаходиться 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'и).