TGStat
TGStat
Type to search
Advanced channel search
  • flag English
    Site language
    flag Russian flag English flag Uzbek
  • Sign In
  • Catalog
    Channels and groups catalog Regional compilations Thematic compilations Платные каналы Search for channels
    Add a channel/group
  • Ratings
    Rating of channels Rating of groups Posts rating
    Ratings of brands and people
  • Analytics
  • Search by posts
  • Telegram monitoring
  • Promotion
    Advertising through Yandex Business Advertising in channels through TGStat Agency Advertising on TGStat.ru website
GameDev HACK

9 Mar, 22:04

Open in Telegram Share Report

Procedural Grass в Ghost of Tsushima

Здесь трава — это не набор расставленных мешей. По сути это GPU-driven procedural pipeline, который генерирует, фильтрует и рендерит растительность почти полностью на стороне GPU.

Цели у системы довольно практичные:

• минимальная нагрузка на CPU
• масштабируемость для большого open world
• высокая визуальная плотность
• правдоподобное поведение на ветру

😡Procedural placement

Растительность не хранится как тысячи объектов сцены. Вместо этого на поверхности генерируются seed points — компактные записи, описывающие будущую траву. В них обычно лежат:

• тип растения
• вариация формы
• плотность
• параметры анимации

Распределение сидов учитывает особенности поверхности:

• угол наклона (slope)
• высоту
• тип материала
• контекст окружения (дороги, тропинки и т.п.)

За счёт этого данных хранится немного, а плотность растительности можно менять динамически.

⚡️ GPU-driven pipeline

CPU здесь в основном задаёт правила. Основная работа происходит на GPU.

Упрощённо пайплайн выглядит так:

seed data → visibility pass → LOD selection → instance buffer → indirect draw

Используются:

• compute shaders для подготовки instance buffer
• GPU frustum и distance culling
• indirect draw calls

CPU не управляет миллионами объектов — он лишь передаёт исходные данные и параметры.

---

🌾 LOD управляет не только геометрией

LOD здесь работает не просто как «меньше полигонов дальше от камеры».

Меняется и геометрия, и плотность растительности:

• рядом с камерой — полноценные blades
• на средней дистанции — grass cards
• вдали — impostor-поля

Так удаётся сохранить ощущение плотного травяного покрытия без перегрузки GPU.

---

🌬 Система ветра

Фирменный “Wind of Tsushima” — важная часть визуального стиля игры.

Для движения травы используется vector field. Он задаёт направление и силу ветра в пространстве.

Поверх этого комбинируются:

• крупные порывы ветра
• мелкие высокочастотные колебания
• локальная деформация от персонажа

Реакция травы задаётся кривыми (curve parameters), поэтому движение выглядит естественно и не синхронно.

---

⚙️ Оптимизации

Несколько вещей, которые делают систему дешёвой:

• секторный procedural culling
• очень компактные instance-данные
• многоступенчатые GPU-буферы

pipeline буферов выглядит примерно так:

visibility → LOD → final draw buffer

В результате одна травинка описывается буквально несколькими байтами данных.

---

🧩 Почему эта система интересна

Ghost of Tsushima хорошо показывает современный подход к растительности:

• data-driven
• GPU-centric
• процедурная генерация
• масштабируемость для open worlds

Трава здесь — не просто декор. Это часть динамической системы окружения, которая реагирует на ветер, камеру и игрока.

---

🎥 Разбор от разработчиков:
https://www.youtube.com/watch?v=Ibe1JBF5i5Y
Procedural Grass in 'Ghost of Tsushima'
In this 2021 Advanced Graphics Summit talk, graphics programmer Eric Wohllaib will discuss how they generate acres of grass within reasonable memory and performance limits, techniques for rendering and animating individual blades, and methods for making thousands of individual blades of grass look l...

70 0 2 2
Catalog
Channels and groups catalog Channels compilations Search for channels Add a channel/group
Ratings
Rating of Telegram channels Rating of Telegram groups Posts rating Ratings of brands and people
API
API statistics Search API of posts API Callback
Our channels
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Read
Академия TGStat Telegram Research 2019 Telegram Research 2021 Telegram Research 2023
Contacts
Справочный центр Support Email Jobs
Miscellaneous
Terms and conditions Privacy policy Public offer
Our bots
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot