Unity 6.3
0 онлайн 120 гостей 3 в системе
Вход
Материалы и шейдеры Шаг 197 из 442

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

Эта функция является экспериментальной и не готова для использования в производстве. Функция и документация могут быть изменены или удалены в будущем.

Виртуальное текстурирование использует кэши текстур фиксированного размера в памяти GPU. Для каждого графического формата существует один кэш. Вы можете настроить размер кэша по умолчанию и перезаписать его размер по умолчанию.

Система потокового виртуального текстурирования (SVT) также использует один кэш CPU в основной памяти для хранения страниц плиток. Страница плитки содержит несколько плиток, которые система SVT читает все вместе с диска в кэш CPU. Это увеличивает скорость чтения с диска на медленных дисках. Когда система виртуального текстурирования запрашивает плитку, она читает страницу, содержащую эту плитку. Вполне вероятно, что система запросит другие плитки на этой странице в последующих кадрах, так что кэш CPU сохраняет эту страницу, чтобы избежать повторного чтения с диска. Чем больше размер кэша CPU, тем дольше Virtual Texturing может держать страницу в основной памяти.

Виртуальное Текстурирование выделяет кэш GPU данного графического формата при рендеринге Материала, имеющего Текстурный стек с текстурой, использующей этот формат. Вы можете настроить размер кэша (в MB) на HDRP активе, что позволяет иметь различные конфигурации для каждого уровня качества.

Также можно использовать методы VirtualTexturing.Streaming.SetGPUCacheSettings для установки размера кэша в сценарии.

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

Основными факторами, влияющими на оптимальный размер данного кэша, являются разрешение выходного экрана и количество слоев в каждом стеке текстур, использующих этот графический формат. Количество материалов в сцене и разрешение текстур не влияют на оптимальный размер так сильно. Для полного разрешения экрана HD на самом высоком уровне качества, совокупный общий размер кэша GPU обычно составляет 700 МБ.

Проблема, называемая "cache thrashing", возникает, когда размер кэша слишком мал, чтобы вместить его содержимое, и он должен загружать и выгружать плитки в одном кадре. Чтобы предотвратить кэша thrashing, система Virtual Texturing автоматически снижает качество текстуры по мере необходимости. Она контролирует использование кэша, и автоматически управляет mipmap bias для Texture Stack sampling в пиксельных шейдерах. Если кэш заполняется, mipmap bias увеличивается. Это обеспечивает, что система Virtual Texturing запрашивает плитки более низкого разрешения, что экономит место в кэше, позволяя ему содержать все запрошенные плитки.

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