Unity - керівництво графічні прийоми

На що здатні мобільні пристрої? Як потрібно планувати свою гру? Якщо гра гальмує, і профайлер показує що проблема в рендеринге, як дізнатися що саме потрібно змінити? Як зробити так, щоб ваша гра виглядала краще і залишалася швидкою? Ця сторінка присвячена загальним, що не технічного викладу методів. Якщо ви шукаєте щось специфічне, см. Оптимізації візуалізації.

Unity - керівництво графічні прийоми

Що можна реалізовувати на поточних користувальницьких пристроях:

  • Лайтмаппінг статичної геометрії. Остерігайтеся:
  • Використання безлічі альфа-тест шейдеров
  • Бампмаппінга, особливо використовуючи вбудовані шейдери.
  • Великої кількості полігонів
  • Анімовані персонажі, навіть з химерними шейдерами. Остерігайтеся:
  • Величезні натовпи або високополігональні персонажі
  • 2D гри зі спрайтами. Остерігайтеся:
    • Overdraw, or, lots of layers drawn on top of each other.
  • Ефекти частинок. Остерігайтеся:
  • Високої щільності великих часток (безліч частинок отрісовиваємих поверх один одного, це інша ситуація овердрафту).
  • Безглуздий кількість частинок або коллайдеров частинок.
  • Фізика. Остерігайтеся:
  • Меш коллайдеров.
  • Безлічі активних тел.
Unity - керівництво графічні прийоми

Що НЕ ПОТРІБНО реалізовувати на поточних користувальницьких пристроях:

  • Графічні ефекти в повному екрані (такі як світіння і глибина різкості).
  • Динамічне попіксельне освітлення (безліч джерел світла з позначкою Important НЕ запечені в карти освітлення)
  • Для динамічного освітлення кожен отрісовиваємих об'єкт буде вимагати додатковий час, це швидко сповільнить гру.
  • Тіні в реальному часі на всіх
    • Unity has support for real time shadows on mobile platforms, but their use must be very judicious, and likely limited to higher-end devices.
Unity - керівництво графічні прийоми

Приклади - як зроблені першокласні мобільні ігри

Shadowgun - чудовий приклад того, що може бути зроблено на поточному мобільному програмному забезпеченні. Більш конкретно, це хороший приклад того, що не слід робити і як обійти обмеження. Тим більше що невелику частину гри зробили загальнодоступною тут повідомлення в блозі.

Ось основні речі, які реалізує Shadowgun для збереження продуктивності:

  • Динамічне освітлення майже не використовується.
  • Замість реальних тіней використовуються blob тіні і карти освітлення.
  • на персонажах lightprobes, а не реальне джерело світла.
  • Спалахи пострілів додані в lightprobe через скрипт.
  • Для обчислення BRDF на персонажах використовується тільки динамічне попіксельне освітлення, довільний напрямок світла.
  • Карти рельєфу (bumpmapping) використовуються рідко.
  • Справжній бампмаппінг використовується тільки на персонажах.
  • Якнайбільше контрасту і деталей випікається в дифузних текстурних картах. Випікається інформація про висвітлення з карт рельєфу.
  • Хорошим прикладом є їх текстура статуї, або їх стіни, які блищать якщо дивитися на них з правого боку. Для їх візуалізації не використовуються бампмапи (карти рельєфу), видимість дзеркальності створюється шляхом запікання в текстуру. Щоб надати цим моделям блискучий вигляд, карти освітлення скомбіновані із дзеркальною підсвічуванням, заснованої на висвітленні вершин.
  • Якщо хочете навчиться створювати подібні текстури, перейдіть на сторінку Оптимізації рендеринга
  • Уникають щільні частинки.
  • Замість щільних частинок використовується UV-скролінг текстур.
  • Уникає ефекту туману.
  • Їх промені бога смоделлени вручну.
  • Поодинокі площині, які з'являються і зникають використовується для досягнення кінематографічного ефекту туману, створюють його видимість.
  • Це швидше, тому що площин кілька і вони далеко один від одного (це має на увазі що кожен піксель туман не обчислюється кожним шейдером).
  • Світіння уникає.
  • Щоб створити видимість світіння на певних об'єктах, використовуються змішані спрайт - площині.
Unity - керівництво графічні прийоми

Це демо створено для того, щоб показати на що здатна Unity на high-end android пристроях.

  • Не використовується динамічне освітлення.
  • Тільки карти освітлення.
  • Карти рельєфу використовуються
  • На цеглинах карти рельєфу, висвітлені спрямованими картами освітлення. Це в повній мірі буде видно на high-end пристроях.
  • Відображення в реальному часі обмежена.
  • Вони розміщували відображають в реальному часі поверхні обережно, окремо і в віддалених один від одного областях, тому вони не працювали більше одного одночасно. Оточення, яке повинно було бути двічі відрендерене, могло легко бути оброблено функцією occlusion culling.

Підсумок - Що це означає для вашої гри

Чим більше ви будете приділяти уваги і краще розуміти обмеження мобільних пристроїв, тим краще буде виглядати ваша гра, і тим краще буде продуктивність. Якщо ви хочете зробити гру високого класу для мобільних, ви отримаєте чималу користь від розуміння того, як будується графіка в Unity і будете здатні написати свої шейдери. Якщо ж ви хочете використовувати вже готові шейдери з ShadowGun, вони доступні тут.

Чи не імітуйте! Запікайте!

Немає сумнівів що ігри намагаються слідувати законам природи. Рух параболічного снаряда і колір кожного блискучого пікселя написаним за формулами, що імітує спостереження в реальному світі. Але наукова симуляція - тільки одна частина гри, є ще інша - малювання. На мобільному маркеті ви не зможете конкурувати з фізично точно відтвореної візуалізацією; апаратна частина не дозволяє цього зробити. Якщо ви занадто захопитеся в імітації реального світу, ваша гра може бути необмеженою, сірої та залагованной.

Малюйте свої полігони і змішуйте фарби як художник.

Запікання карт рельєфу в Shadowgun відмінний приклад цього. Дзеркальне освітлення там вже в текстурі, людське око не помічає того, що вони насправді не збігаються з напрямом світла, по текстурі це просто контрастні деталі, повністю сфальсифіковані, але, в кінцевому підсумку виглядають чудово. Це поширені "обманки", які використовуються в багатьох успішних іграх. Порівняйте шолом в перший скріншот з Halo, до релізу з цим шоломом релізний скріншот. Створюється видимість того, що виступи броні відображаються в шоломі, але насправді це відображення запечене в текстуру шолома. У Лізі Легенд (League of Legends), є невеликий ефект. створює видимість пиксельного освітлення, але насправді там змішана площину з текстурою, яка можливо створена в момент запису знімка екрана, піксельний світло, сяючий на землі.

Що добре працює:

  • Карти освітлення статичної геометрії
  • Динамічне освітлення і не змішування великих динамічних елементів оточення. Виберіть або одне, або інше.
  • Lightprobes для рухомих об'єктів
  • Поточне мобільне обладнання ігнорує деякі джерела динамічного світла і не може робити тіні. Lightprobes - витончене рішення для складних ігрових світів зі статичним освітленням.
  • Спеціалізовані шейдери, висококонтрастні текстури
  • Шейдери в ShadowGun мінімізують обчислення кожного пікселя і використовують складні, високоякісні текстури. Див. Оптимізації рендеринга для того, щоб дізнатися як зробити добре виглядають текстури навіть з простим шейдером.
  • мультяшна графіка
  • Хто сказав що ваша гра повинна виглядати як на фото? Якщо ви покладете освітлення і атмосферу на художника текстур, а не на движок, вам навіть не доведеться турбуватися про оптимізацію візуалізації.

Що не спрацює:

  • Світіння і інші ефекти постобробки
  • Коли це можливо, такі ефекти досягаються змішаними квадами, Shadowgun - відмінний приклад цього.
  • Бампмаппінг, особливо з вбудованими шейдерами
  • Використовуйте його обережно, тільки на важливих персонажів або об'єктах. Не обов'язково робити бампмаппінг для всіх об'єктів на екрані.
  • Замість використання карт рельєфу запікайте більше деталей в дифузні текстури. Ефект в Лізі Легенд - відмінний приклад того, як це може успішно використовуватися в індустрії.

Але як я зможу це зробити?

Практичний посібник з оптимізації для мобільних