Быстрее ли использовать графическую карту для создания мипмапов во время выполнения или для загрузки их с текстурой из файла? - PullRequest
1 голос
/ 01 ноября 2019

Я прочитал, что обычной практикой является сохранение мипмапов в одном файле с текстурой и одновременная загрузка базового изображения и мипмапов. С другой стороны, чтение из памяти (HDD или SSD) значительно медленнее, чем использование памяти ближе к ЦП;Графические API, такие как OpenGL и Vulkan, позволяют генерировать мипмапы с использованием выделенных графических карт.

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

1 Ответ

0 голосов
/ 05 ноября 2019

Возможно, это не совсем тот ответ, который вам нужен, но, как правило, IMO рекомендует с точки зрения производительности рендеринга сжимать текстуры (используя , что поддерживается в GPU ). в этом случае вы обычно генерируете цепочку карт MIP и сжимаете «в автономном режиме».

Учитывая, что вы можете достичь результатов сжатия, скажем, от 2 до 8 бит / с (т.е. от 1/16 до 1/4 от исходного размераисточника 32bpp), сжатие легко противодействует 1/3 накладных расходов, которые меньшие уровни карты MIP добавляют к текстуре.

Кроме того, вы могли бы на практике ограничитьсяГрафический процессор просто использует блочный фильтр 2x2 для понижающей дискретизации, и это может быть неоптимальным с точки зрения качества.

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

...