Pull to refresh
10
0
German Zvezdin @GermanZvezdin

C++ developer

Send message

В первой части статьи есть небольшое объяснение моделей освещения. В пре-принте оно тоже было, но я решил его убрать по причине того, что статей с описанием моделей освещения достаточно много на хабре.

Спасибо за комментарий ! Не могли бы Вы более подробно описать места в статье, которые показались Вам непонятными ? В конце статьи приведен исходный код программы, кажется при должном желании в нем можно разобраться :)

SDF - гибкий инструмент, который позволяет реализовывать в едином стиле большое количество примитивов. Не всегда много простых итераций лучше одной сложной, все зависит от конкретной сцены, из личного опыта скажу, что для сцены с объектами одного типа можно не использовать sdf, но когда сцена сложная с различной геометрией, то без SDF не обойтись. Одним из главных ограничений является, как мне кажется, тот факт, что поверхности, описываемые sdf должны обладать достаточной степенью гладкости, что сильно сужает количество различных примитивов. Так же существенным ограничением является проблема, называемая "alising", решений которой сильно просаживает fps и даже может нивелировать плюсы от ускорения за счет обратного распространения лучей.

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

Information

Rating
Does not participate
Location
Chartres, Eure-et-Loire, Франция
Registered
Activity

Specialization

Game Developer
Git
C++
C
Linux
OpenGL
Vulkan API