Недавно я реализовал мягкие тени, используя трассировку кодов в вокселе в OpenGL 4.3, отслеживая конус в направлении света и накапливая значения непрозрачности.
Ключевым моментом, который я пытаюсь решить или скрыть, является очень эффект вокселизированного эффекта затенения, когда окклюдированная поверхность становится ближе к окклюдеру, а также скрывает четкие пятна в тени из-за поверхностной вокселизации. Я использую voxels с низким разрешением 64x64x64; однако, даже если я использую voxels с более высоким разрешением, некоторые из низкоуровневых вокселов на более высоком уровне мип-карты все еще фиксируются в трассировке.
Итак, вот моя первая идея: я хочу, чтобы удержать самые мягкие части тени, которая находится дальше всего, и заменить части тени, которая ближе к окклюдеру с теневой картой. Теневая карта будет исчезать, так как она находится дальше от каждого окклюдера, и я каким-то образом вложу ее в конус, прослеженный тени.
Может ли кто-нибудь подумать о способе угасать тень от расстояния от каждого объекта для теневой карты, а затем плавно переплыть ее в тени с конусом?
Еще одна идея, которую я хотел бы сделать, - это как-то проследить тени на поверхностях, которые ближе к окклюдеру, но это, вероятно, будет слишком дорого.
В качестве альтернативы, я хотел бы приветствовать любые другие идеи, которые помогут улучшить алгоритм мягкой тени.
Я также поставил видео, чтобы показать его в движении:
https://www.youtube.com/watch?v=SUiUlRojBpM
По-прежнему не найдено способа разрешения проблемы теневого копирования.