Spec-Zone.ru › Qt 6.1

Лучшие практики по устранению эффекта ступенчатости

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

Причины эффекта ступенчатости

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

Ступенчатость геометрии

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

Эффективные методы уменьшения эффекта ступенчатости для геометрии

Наиболее правильным решением является использование многократной выборки, так как оно собирает больше геометрических деталей только по мере необходимости. Также можно использовать временной антиалиасинг или постепенный антиалиасинг, чтобы корректно уменьшить эффект.

Наконец, в некоторых случаях можно использовать карту непрозрачности контура, чтобы сгладить края выбранной геометрии.

Ступенчатость текстур

При субдискретизации текстуры отображается меньше пикселей, чем в оригинале, что приводит к нежелательным артефактам в зависимости от выбранных пикселей. Этот эффект усугубляется при движении модели, так как в разные моменты времени выбираются разные пиксели. На изображении ниже обратите внимание, как линия между E3 и F3 отсутствует, сильно видна между G3 и H3, затем исчезает на следующие 5 столбцов и так далее.

Эффективные методы уменьшения эффекта ступенчатости для текстур

Простейшим (и, вероятно, лучшим) решением этой проблемы является использование mipmap в самой текстуре изображения. Альтернативные решения включают использование временного антиалиасинга или постепенного антиалиасинга для получения большей информации из текстуры.

Использование многократной выборки не решит эту проблему.

Ступенчатость отражений

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

Эффективные методы уменьшения эффекта ступенчатости для отражений

Наиболее правильное решение в этом случае — использование временного антиалиасинга или постепенного антиалиасинга для поиска дополнительной информации.

Простое альтернативное решение, которое может быть приемлемым, — сделать материал менее глянцевым, более шероховатым. В этом случае автоматически используются mipmap с меньшим разрешением окружающей среды, что сглаживает резкие детали.

Методы устранения эффекта ступенчатости

Эффект ступенчатости возникает, когда в исходном изображении содержится больше информации, чем мы можем представить в пикселях на экране. Методы устранения эффекта ступенчатости можно разделить на три категории:

  • Методы, которые находят дополнительную информацию для одного пикселя и представляют их все одновременно.
  • Эффекты изображения, которые пытаются определить, где есть проблемы, и скрыть их.
  • Методы, используемые художниками для обхода ограничений.

Методы, которые находят дополнительную информацию

Многократная выборка

Многократная выборка (MSAA) работает со всем слоем. Края геометрии супердискретизируются, что приводит к более плавным контурам. Однако этот метод не влияет на материалы внутри геометрии.

  • Преимущества: Хорошие результаты для контуров геометрии, где ступенчатость часто наиболее заметна. Работает с быстрой анимацией без проблем. Многие современные графические процессоры поддерживают 2x или 4x MSAA без потери производительности.
  • Недостатки: Может быть дорогостоящим в использовании. Не помогает с проблемами текстур или отражений.

Временной антиалиасинг

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

  • Преимущества: Благодаря смещению камеры, он находит реальные детали, которые в противном случае были потеряны. Низкое влияние на производительность.
  • Недостатки: Быстро движущиеся объекты вызывают эффект "призрака" в одном кадре.

Постепенный антиалиасинг

Постепенный антиалиасинг (PAA) работает со всем слоем. Когда всё содержимое слоя перестаёт двигаться, камера немного смещается между кадрами, а результат каждого нового кадра смешивается с предыдущими кадрами. Чем больше кадров вы накопите, тем лучше будет результат.

  • Преимущества: Предоставляет подробные статические изображения без потери производительности.
  • Недостатки: Не срабатывает, если происходят какие-либо изменения в визуализации. 8x PAA занимает одну восьмую секунды для завершения рендеринга (при 60 кадрах в секунду), что может быть заметно.

Mipmap

Mipmap хранит текстуру вместе с предварительно вычисленными версиями с более низким разрешением. Когда текстура отображается в меньшем размере, система рендеринга автоматически использует эти изображения с низким разрешением (которые объединяют много деталей в один пиксель), смешивая их в результате по мере необходимости.

  • Преимущества: Очень низкое влияние на производительность. Значительно улучшает качество изображения текстур. Способствует использованию сжатых текстур, которые загружаются и рендерятся быстрее, чем несжатые изображения.
  • Недостатки: Требует использования внешних инструментов для оптимизации изображений. Использует на 33% больше графической памяти, чем то же изображение без mipmap.

Супердискретизация

Супердискретизация (SSAA) работает со всем слоем или даже с несколькими слоями. Она не упоминается или не сравнивается выше, потому что штраф за производительность может быть существенным, и потому что это требует дополнительных усилий от художника. Этот метод следует использовать в крайних случаях.

  • Преимущества: Предоставляет антиалиасинг для всей сцены без ограничений на анимацию.
  • Недостатки: Может сильно ухудшить производительность, когда сцена уже ограничена пропускной способностью графической системы, что часто бывает.

Методы, используемые художниками

Карты непрозрачности контура

Если у вашей модели есть постоянный контур, вы можете применить карту непрозрачности, которая сделает внешний край геометрии прозрачным. Использование градиента для непрозрачности позволит краю объекта плавно исчезать. Однако даже если ваша карта непрозрачности переходит непосредственно от полностью непрозрачного к полностью прозрачному на протяжении всего одного пикселя, результат всё равно будет содержать антиалиасинг, как показано на примере выше. Это потому, что карты изображений, включая карты непрозрачности, используют билинейную интерполяцию.

  • Преимущества: Может демонстрировать более мягкие переходы, чем обычный антиалиасинг. Может применяться к каждой модели, а не к каждому слою.
  • Недостатки: Не может использоваться, если контур объекта будет меняться. Несколько перекрывающихся моделей, использующих прозрачность, потребляют производительность fill-rate, которая часто ограничена.

Изменение материалов или геометрии

Как показано на изображении для ступенчатости отражений выше, иногда простейшим решением проблем является изменение произведений искусства. Если на углу вашей модели появляются отвлекающие глянцевые блики, спросите себя: Можно ли сделать материал мягче? Можно ли изменить геометрию, чтобы сгладить или изменить угол отражения? Можно ли отредактировать карту окружающей среды, чтобы уменьшить резкие переходы?

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/quick3d-asset-conditioning-anti-aliasing.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API