Як я можу зробити контур шейдера типу "Життя дивно"?


13

Я хочу зробити ескіз шейдером, як життя дивним.

шейдер має дві частини:

1. анімована пунктирна лінія

2. шумний контур

Мені подобається знати, як можна зробити шумні контури?

побачити контур об’єктів

запис_2019_01_21_09_43_07_10

запис_2019_01_21_09_51_00_896

запис_2019_01_21_09_45_53_942

record_2019_01_21_11_37_27_699

Спочатку я спробував скласти контур, скопіювавши вхідні дані вершини та масштабувавшись згідно з нормальним напрямком, потім Cull Back.but, я думаю, це щось на зразок ефекту зображення, оскільки контур іноді переміщується всередині об’єкта. все одно я буду вдячний, якщо хтось допоможе мені реалізувати цей шейдер :)

Що я спробував

Я використовував виявлення ребер і анімував його вершинним шейдером, але це не так добре, як вище gif-файли.

запис_2019_01_21_18_16_43_440

запис_2019_01_21_18_27_28_597

Відповіді:


1

Я робив щось подібне в Unreal Engine 4, тому я збираюся пояснити лише поняття. Можна зробити це двома способами, і це різні градієнти компромісів між продуктивністю та простотою реалізації.

  1. Спочатку додайте нову сітку поверх основної сітки, трохи більше (так само, як і фізичну сітку коллайдера). Потім створіть для нього прозорий шейдер матеріалу та ввімкніть шейдер / покажіть сітку, оскільки фрустум виду гравця знаходиться в межах відстані x відстані від сутності. Ця продуктивність велика через шейдер прозорості, але оскільки у вас є лише невеликий набір об'єктів, виділених у певний момент, це легко здійснити та здійснити.

  2. Створіть базову текстуру за допомогою хеш-ліній та змістіть координати текстури відповідно до заздалегідь визначеного набору матриць. Це створює ілюзію «анімованих текстур»; у галузі його ще називають динамічним матеріалом (його є більше, але ви можете прочитати, якщо хочете). Щодо контуру, ви можете знайти безліч навчальних посібників в Інтернеті. Ця техніка потребує значно більше часу на реалізацію, оскільки вам доведеться познайомитися з матрицями переміщення та часом оновлення матеріалу, щоб отримати результат, подібний до наведених вище скріншотів, не кажучи вже про необхідність вирівнювання хеш-ліній за зміною кута в базовій сітці.

Якщо продуктивність не є проблемою, перейдіть до 1. Якщо кожен FPS налічує, використовуйте 2, але очікуйте, що багато проблем потребують часу, щоб вирішити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.