top of page

Світло у воксельному світі: справжні джерела чи flood fill?

Фото автора: Marcel Dütscher
Marcel Dütscher
27 черв.
Читати 1 хв

Гравець ставить світильник у своїй базі. Що відбувається технічно? Це невинне запитання спричинило для нас принципове рішення — а відповідь є гарним прикладом того, що «сучасніше» рішення не завжди краще.


Варіант А: справжнє світло Unity. Кожен сяючий блок стає точковим джерелом світла, усе обчислює рушій. Виглядає чудово — але не масштабується. У воксельному світі в полі зору можуть бути сотні сяючих блоків; точкові світла в реальному часі в такій кількості змушують попітніти будь-який GPU, тим паче в браузерній збірці.


Варіант Б: світло flood fill. Класика жанру: світло — це числове значення на блок, що поширюється від джерела й зменшується з кожним кроком. Дешевіше нікуди, джерел можна скільки завгодно — але результат виглядає пласким, бо світло не має напрямку. Стіна біля лампи така ж яскрава, як поверхня під нею.


Наш вибір: flood fill з напрямком. Ми залишилися при підході flood fill, але навчили його інформації про напрямок: світло знає, звідки воно йде, і поверхні освітлюються відповідно по-різному. Результат запікається в меш чанка під час мешингу — під час роботи це майже нічого не коштує, але виглядає помітно об'ємніше за класичне блокове світло.


Цей урок ми відтоді несемо скрізь: спершу запитайте, у чому справжня проблема жанру (тут: дуже багато джерел, статична геометрія), і лише потім обирайте технологію. Справжні світла розв'язували проблему, якої в нас не було, — і створили б таку, яку ми не розв'яжемо.

Останні пости

Дивитися всі
Чому нова версія називається 2026.7.19, а не 0.9.2 🗓️

Хто оновлюється сьогодні, перестрибує з версії 0.9.1 на 2026.7.19. Це схоже на помилку друку, але це навмисне рішення: ми змінили схему версіонування, від «семантичних» версій до версій за датою (рік.

 
 

Коментарі


Коментування цього посту більше не доступне. Зверніться до власника сайту, щоб дізнатися більше.
bottom of page