Сглаживание всей сцены после рестеризации

Я столкнулся с проблемой при компиляции кода openGl. Дело в том, что я хочу добиться полного сглаживания сцены, и я не знаю, как это сделать. Я включил принудительное сглаживание в панели управления Nvidia, и именно этого я действительно хотел добиться. Я делаю это сейчас с GL_POLYGON_SMOOTH. Очевидно, что это не эффективно и красиво. Вот вопросы

1) Должен ли я использовать множественную выборку? 2) Где в конвейере openGl смешивает цвета для сглаживания? 3) Какие существуют альтернативы кроме GL_*_SMOOTH и мультисэмплинга?


person pooya    schedule 10.08.2010    source источник
comment
Разве сглаживание не является частью растеризации?   -  person Marcus Johansson    schedule 10.08.2010


Ответы (2)


GL_POLYGON_SMOOTH не метод полноэкранного сглаживания (FSAA).

Не уверен, что вы подразумеваете под «неэффективным» в этом контексте, но он, безусловно, выглядит некрасиво из-за его тенденции смешиваться в середине сетки (на краях треугольника).

Теперь, что касается FSAA и ваших вопросов:

  1. Мультисэмплинг (также известный как MSAA) является сегодня стандартным способом выполнения FSAA. Обычной альтернативой является суперсэмплинг (SSAA), заключающийся в рендеринге с более высоким разрешением и понижении разрешения в конце. Это намного дороже.
  2. В спецификации говорится, что логически GL хранит буфер сэмплов (в 4 раза больше размера буфера пикселей, для 4xMSAA) и буфер пикселей (всего в 5 раз больше памяти), и при каждом сэмпле записывает в буфер сэмплов обновления. буфер пикселей со значением resolved из текущих 4 сэмплов в буфере сэмплов (кстати, это не называется смешиванием. Смешивание — это то, что происходит во время записи в буфер сэмплов, контролируемое glBlendFunc и др.). На практике это не то, что происходит в аппаратном обеспечении. Как правило, вы записываете только в буфер сэмплов (и аппаратное обеспечение обычно пытается сжать данные), и когда приходит время его использовать, реализация GL сразу разрешает полный буфер, прежде чем произойдет его использование. Это также помогает, если вы действительно используете буфер семплов напрямую (тогда вообще не нужно разрешать).
  3. Я рассказал об SSAA и его стоимости. Последняя технология называется морфологическим сглаживанием (MLAA) и активно исследуется. Идея состоит в том, чтобы выполнить постобработку полностью визуализированного изображения и сгладить то, что выглядит как острые края. Суть в том, что это не реализовано самим GL, вы должны закодировать его как проход постобработки. Я включил его для справки, но это может стоить немалых денег. много.
person Bahbar    schedule 10.08.2010
comment
MLAA действительно великолепен, но не пробуйте его, если у вас действительно нет ОЧЕНЬ много времени, чтобы реализовать его правильно. Вы должны пойти на MSAA. - person Calvin1602; 12.08.2010
comment
@ Calvin1602: Действительно. Вот почему я упомянул, что это все еще исследуется :D - person Bahbar; 12.08.2010