Three.js — добавьте тени к области освещения с помощью отложенного рендеринга.

Я использую WebGLDeferredRenderer для простой сцены (созданной кубом, имитирующим комнату, и двумя маленькими кубами для тестирования теней), но я не могу показать тени, сгенерированные из AreaLight, используемого в сцене!

В этой демонстрации есть 3 зональных источника света, но ни один из них не создает тени на один объект (они просто освещают «комнату»).

Есть ли какой-то конкретный шейдер, который я могу использовать для решения этой проблемы? Или лучше... есть ли возможность отбрасывать тень при отложенном рендеринге? :)


person Dario Corbelli    schedule 23.02.2013    source источник


Ответы (4)


Тени в настоящее время не поддерживаются в three.js r.56 с использованием отложенного рендеринга с WebGLDeferredRenderer.

Вот два примера, где точечные и точечные источники света отбрасывают тени с помощью отложенного рендеринга в three.js, но в них используется модифицированная версия библиотеки.

http://alteredqualia.com/three/examples/webgl_deferred_shadowmap.html

http://alteredqualia.com/three/examples/webgl_deferred_shadowmap_point.html

Однако примеров зонального освещения пока нет.

Итак, то, что вы хотите, выполнимо, просто еще не поддерживается и не с областным освещением.

три.js р.56

person WestLangley    schedule 23.02.2013
comment
да, я уже видел эти демонстрации, и я также заметил, что они используют другую версию библиотеки three.js (она тоже была сжата), но я думал, что есть какой-то официальный метод - person Dario Corbelli; 25.02.2013
comment
В приведенных выше ссылках alteredqualia просто использовала пользовательскую версию threejs на основе r55. Официального способа сделать это не существует. Так что забудьте об этом на данный момент или реализуйте это самостоятельно. - person Michel Gokan Khan; 02.03.2015

Используйте направленные или точечные источники света. Зона света не отбрасывает теней.

person gaitat    schedule 23.02.2013
comment
ни один из них (точечный, направленный, площадной) не отбрасывает тени в режиме отложенного рендеринга. - person Michel Gokan Khan; 02.03.2015

Я полагаю, что тени области света еще не реализованы, хотя кто-то, вероятно, работает над этим, так что это может быть возможно в будущем. Вы можете попытаться сделать это самостоятельно, но для этого потребуются серьезные навыки программирования, а это непростая задача :)

Я думаю, что в настоящее время вы можете использовать точечные и направленные световые тени в отложенном рендерере, возможно, даже точечные световые тени.

Вы можете сымитировать тени, используя другой тип освещения с низкой интенсивностью только для теней, но это может выглядеть немного шатко.

person yaku    schedule 23.02.2013
comment
Добавляет ли этот ответ что-то еще? - person gaitat; 23.02.2013
comment
Вы написали тот же ответ, что и ниже, но с большим количеством слов. - person gaitat; 23.02.2013
comment
Разве я не объяснил причину, по которой зональные источники света не отбрасывают тени (статус разработки), или не рассказал, как можно подойти к решению проблемы, так что ответ может быть полезен и в будущем? К тому же я уже наполовину заканчивал ответ, когда появился твой пост. Я не вижу причин для батхертта, насколько я знаю, мы не соревнуемся или что-то в этом роде. - person yaku; 23.02.2013
comment
Метод @yaku без источников света когда-либо поддерживался в режиме отложенного рендеринга, даже в точечном или направленном свете. - person Michel Gokan Khan; 02.03.2015

я думаю, что вам нужно отодвинуть источник карты теней, основываясь на том, насколько велика область ... вы также можете на глаз возиться с процентной более близкой фильтрацией в зависимости от того, как далеко вы должны отодвинуть свой теневой заклинатель.

person Community    schedule 17.07.2014