Я играю с несколькими проходами в WebGL, чтобы применить некоторые визуальные улучшения к моим рендерам.
Я тестирую две текстуры (взято отсюда: Продолжение обработки изображений WebGL), и это в основном мой рабочий процесс:
- нарисовать геометрию и сохранить значения глубины в буфере текстуры
- примените проход SSAO (на основе этой скрипты из Rabbid76)
- в конце я выношу текстуру на экран
Теперь я не могу понять, почему вокруг некоторых частей окончательного изображения есть черная рамка. Я попытался точно настроить некоторые параметры SSAO, но мне не удалось избавиться от этого артефакта, поэтому, просто предполагая, что теперь я считаю, что эта черная рамка связана с неправильной настройкой смешивания моих текстурных буферов.
На самом деле это код в проходе глубины:
gl.disable(gl.BLEND);
gl.enable(gl.DEPTH_TEST);
gl.depthMask(true);
... drawings
Я пробовал еще так:
gl.enable(gl.BLEND);
gl.blendEquation(gl.FUNC_ADD);
gl.blendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA);
...но не приводит меня ни к какому результату.
На изображении ниже этот артефакт отчетливо виден в виде тонкой черной линии вокруг стэнфордского дракона:
Поскольку я полностью потерялся в этой проблеме, может ли кто-нибудь указать мне правильное направление?
Мой вопрос: мне нужно нарисовать геометрию с прозрачным фоном - какой правильный режим наложения для этого при рендеринге в задний буфер и пинг-понге двух текстур для применения нескольких эффектов?