Как сделать выборку из «одной» текстуры Mipmap без артефактов? - PullRequest
0 голосов
/ 15 апреля 2019

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

One MipMapping Image

Однако при выборке текстур в opengl будет выполняться билинейная интерполяция, которая вызывает артефакты на краях текстуры mipmap. Как избежать артефактов?

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

1 Ответ

0 голосов
/ 24 апреля 2019

В своем вопросе вы говорите

. Обычный метод снижения затрат на ввод-вывод текстуры заключается в том, чтобы соединить несколько изображений mipmap-текстуры с одним изображением, как показано ниже.

и Iподумал, что, возможно, вы имели в виду, как в текстурном атласе , но затем ваш пример показывает только одно изображение с 2 копиями карты MIP уровня 1, 4 (!) копиями карты MIP уровня 2 и 2^ N копий уровня N!

Какую стоимость ввода / вывода текстуры вы хотите сэкономить?Насколько я понимаю (и я уже несколько лет занимаюсь разработкой графического оборудования), ситуация усугубляется.Я задавался вопросом, возможно ли это для какого-то программного рендерера, но тогда вы упоминаете OpenGL, так что это кажется маловероятным.

Почему бы вам просто не придерживаться традиционного подхода?Передайте карту верхнего уровня в API и затем вручную предоставьте карты более низкого разрешения или , если они доступны, позвольте аппаратному обеспечению сгенерировать их для вас?

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

Кстатидля такого рода вопросов вы также можете попробовать сообщество https://computergraphics.stackexchange.com/.

...