Я пытаюсь замаскировать 3D-сцену другой 3D-сценой. Мне удалось заставить его работать с обычными объектами THREE.Mesh, как показано ниже:
В основной сцене есть куча низкополигональных сфер. Сцена с маской имеет красный куб. Обе сцены передаются в виде текстур пользовательскому шейдеру, который проверяет красные пиксели на маске и отрисовывает пиксели основного.
Оно работает. Вот скрипт: http://jsfiddle.net/at4rumn6/3/
// please check source on jsfiddle
--
Однако, если я заменю кучу сфер каплями, как в примере с Марширующие кубы, он перестанет работать. . Проблема показана ниже:
Кажется, что-то не очищается в рендерере. Это может быть связано с THREE.ImmediateRenderObject, но я не понимаю, что он делает. Это похоже на очень специфический случай, возможно, я нашел ограничение в библиотеке. А может я просто что-то не так делаю.
Вот еще одна скрипка, показывающая ошибку: http://jsfiddle.net/Lwm93rxr/2/
Есть ли способ очистить буфер и заставить мою маску работать без «грязи» из других сцен?