javascript — отключить сглаживание в WebGL для конкретной геометрии

Я написал движок на основе плиток — все выглядит хорошо, если в WebGL отключено сглаживание.

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

Я попытался отключить буфер глубины и «установить коэффициенты смешивания в GL_SRC_ALPHA_SATURATE (источник) и GL_ONE (пункт назначения)», как описано здесь: http://www.glprogramming.com/red/chapter06.html . Это приводит к рисованию чисто белых пикселей — не уверен, что там происходит.

Графика на моих текстурах дополняется, поэтому у WebGL не должно быть проблем с фильтрацией. Я сделал экстремальные отступы, чтобы это не способствовало.

Я исследовал glSampleCoverage() и попытался сделать несколько снимков в темноте со случайными значениями, которые ничего не дали. Я не знаком с тем, что он на самом деле делает, и не могу найти хороших примеров в Интернете, кроме нескольких абстрактных предложений.

Я бы предпочел не отключать буфер глубины.

GL_MULTISAMPLE не доступен.

У меня есть среда Emscripten с C ++ — но это не имеет значения, я могу написать встроенный javascript, если это необходимо — но я думаю, что для этого есть общие решения OpenGL.

Есть ли способ отключить сглаживание в WebGL только для определенной геометрии?

Хорошо:
Хорошо

Плохой:
Плохой

8

Решение

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

Основная проблема в вашем случае состоит в том, что многие алгоритмы АА являются «постобработкой», которая должна выполняться после того, как вся ваша геометрия отрисована. Они знают только о пикселях, так сказать.

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

http://www.humus.name/index.php?page=3D&ID = 87
http://en.wikipedia.org/wiki/Supersampling

0

Другие решения


По вопросам рекламы [email protected]