2016-11-15 6 views
0

Я разрабатываю игровой движок в JavaScript и webgl и использую технологию прямого рендеринга, один проход для каждого источника света в сцене.Ошибка при использовании аддитивного смешивания в WebGL

Я использую аддитивное смешение для второго прохода, и он работает достаточно хорошо, за исключением случаев, когда мне нужно освещать объекты с прозрачными текстурами. В этом случае я получаю неприятный артефакт, который вы можете увидеть на рисунке ниже. Помните, что объекты в сцене сортируются по z (от дальнего до ближайшего), а прозрачные объекты отображаются после непрозрачных. Я использую функцию blend gl.ONE - gl.ONE, но, честно говоря, я старался беспорядочно использовать любую возможную комбинацию, которая могла бы иметь смысл.

Любой может дать мне понять, как исправить эту проблему?

Blending artifact

+0

ONE - ONE совсем не смешивается: '1 - 1 = 0' –

+0

post [кратчайший код, необходимый для воспроизведения] (http://stackoverflow.com/help/on-topic) – gman

ответ

0

я отладки, что я думаю, подобная проблема. Я обнаружил, что базовая страница демонстрируется на пикселях с альфа меньшей 1. Я, кажется, получаю это, даже если смешение отключено или какой-либо режим смешивания установлен. Один из способов отладки - изменить цвет фона на вашей странице и посмотреть, изменит ли он результат.

Проверьте, когда вы создаете свой контекст WebGL, если вы задаете значение true для 'alpha'. Если это так, попробуйте изменить на false. Это означает, что браузер будет обрабатывать ваш холст как полностью непрозрачный.

 Смежные вопросы

  • Нет связанных вопросов^_^