Слишком "ленивые" источники света

Разрабатываю собственный игровой движок #ForceTech на базе ресурсов игр #Thief и #SystemShock2 . Подробнее информация о проекте изложена в статье-FAQ.
На пути к релизу удалось исправить ещё один баг: некорректную отрисовку тени перемещающегося объекта (на видео). У меня в движке динамические тени строятся от всех источников, поэтому пришлось сильно оптимизировать этот момент, видимо, немного перестарался :).

Вкратце, суть заключается в том, что точечные источники света состоят из шести "камер", которые "считывают" информацию о расстоянии до объектов, каждая - в своём направлении, и формируют буферы глубины. Это очень дорогостоящая операция, поэтому, в целях оптимизации, при перемещении объекта в радиусе свечения источника, обновляются буферы только тех камер, которые действительно "видят" этот объект.

Ошибка заключалась в том, что при выходе объекта за пределы видимости одной из камер, остальным камерам источника не посылался сигнал "обновить свои данные". Ради этого пришлось поменять иерархию отправки сигналов: теперь камеры ждут их не от объектов, а он ячеек (групп объектов), на которые разбит весь уровень.

А так это выглядит с альтернативной точки зрения

Подписывайтесь, чтобы не пропускать новости проекта!

32K32K показов
3K3K открытий
47 комментариев

Я не эксперт, разумеется, но разве тень не должна меняться в зависимости от положения при падении? Свет ведь в разных положениях падает под разными углами.

Ответить

Нутк, так и происходит
Это сверху

Ответить

Да, если присмотреться, тут именно так всё и происходит: когда объект вверху, его тень длиннее, чем когда он внизу. Тень рисуется динамически, а не заранее, просто расстояние до источника выбрано не очень короткое. В заметке написано, что используется буфер глубины, в этом случае просто невозможно нарисовать физически некорректную тень.

Ответить

Ну зависит от расстояния до источника

Ответить

Разрабатываю собственный игровой движок

С возрастом это пройдет, начнешь заниматься чем то нормальным

Ответить

Да вроде с возрастом наоборот - вместо того, чтобы покупать овощи, люди начинают их выращивать сами... 🤔

Ответить

Забей на идиотов и делай :)

Ответить