Метод рисования по текстуре прямо в игре

Программирование на Юнити.

Метод рисования по текстуре прямо в игре

Сообщение Rockwell_J 11 ноя 2021, 03:14

Добрый день всем форумчанам.

3D игра в жанре гонки на время. Вид камеры примерно как в Need for Speed. Реализуется на всех платформах, в том числе и мобильных.

Нужен совет о том, каким методом лучше всего реализовать следующую задумку:

Машинка едет по плоской поверхности. Позади нее разрушается земля (перерисовывается в лаву) ровно в том месте, где она только что проехала. Когда она доезжает до финиша, то необходимо показать весь ее путь видом сверху. То есть весь ее путь нужно запомнить и перевести в рисунок.

Было несколько идей как это сделать:
* Рисовать прямо на текстуре поверхности;
* Рисовать маской прозрачности на поверхности, чтобы проявлялась еще одна поверхность под ней;
* Создать генерацию разрушения поверхности при соприкосновении с машинкой, и показывать дополнительную поверхность под ней;

Важное уточнение - лава будет анимированой.

Подскажите пожалуйста какой из способов менее ресурсозатратный, чтобы можно было портировать на телефон. Возможно до нужного метода я не додумался, так что пишите свои. Я представлял что-то на подобии метода чистки поверхностей как в Powerwash Simulator, но это не точно.

В любом случае заранее спасибо.
Rockwell_J
UNец
 
Сообщения: 2
Зарегистрирован: 11 ноя 2021, 02:34

Re: Метод рисования по текстуре прямо в игре

Сообщение waruiyume 11 ноя 2021, 05:10

Несколько вариантов:
  1. Рендертекстура + аппаратная тесселяция (самый жир, на телефоне работать не будет)
  2. Рендертекстура + параллакс дисплейсмент текстур (жир, на телефоне работать будет, но медленно)
  3. Рендертекстура в качестве маски(думаю лучший вариант)
  4. Использование сильно тесселированной геометрии которая будет обновляться при движении на ЦПУ (очень гибкий вариант, который будет от: очень быстро и уродливо, до очень медленно и очень красиво)
  5. Использование сильно тесселированной геометрии которая будет искажаться в вершинном шейдере по рендертекстуре (быстрее, чем предыдущий вариант, но менее гибкий)
  6. Генерация геометрии за машиной, что-то вроде трейл рендерера, можно найти какой-нибудь готовый skidmarks плагин (зависит от реализации)

Могу подкинуть концепт рисования маски https://forum.unity.com/threads/color-b ... st-4797017
Думаю если поискать, то можно найти что-нибудь продакшин рейди.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Метод рисования по текстуре прямо в игре

Сообщение Rockwell_J 19 ноя 2021, 22:49

waruiyume писал(а):Несколько вариантов:
  1. Рендертекстура + аппаратная тесселяция (самый жир, на телефоне работать не будет)
  2. Рендертекстура + параллакс дисплейсмент текстур (жир, на телефоне работать будет, но медленно)
  3. Рендертекстура в качестве маски(думаю лучший вариант)
  4. Использование сильно тесселированной геометрии которая будет обновляться при движении на ЦПУ (очень гибкий вариант, который будет от: очень быстро и уродливо, до очень медленно и очень красиво)
  5. Использование сильно тесселированной геометрии которая будет искажаться в вершинном шейдере по рендертекстуре (быстрее, чем предыдущий вариант, но менее гибкий)
  6. Генерация геометрии за машиной, что-то вроде трейл рендерера, можно найти какой-нибудь готовый skidmarks плагин (зависит от реализации)

Могу подкинуть концепт рисования маски https://forum.unity.com/threads/color-b ... st-4797017
Думаю если поискать, то можно найти что-нибудь продакшин рейди.



Спасибо большое. Буду пробовать варианты, искать баланс
Rockwell_J
UNец
 
Сообщения: 2
Зарегистрирован: 11 ноя 2021, 02:34


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11