Знаєте цю сцену: ви ставите текстури на Ultra, бо в меню здається, ніби купуєте «більше гри», а потім графік часу кадру перетворюється на сучасне мистецтво. GPU не завантажений під 100%, CPU теж ні, але рух камери відчувається, ніби ви тягнете диван по килиму.
Зазвичай це не «погана оптимізація» в абстрактному сенсі. Це дуже специфічний поганий день: тиск на VRAM, резидентність текстур і огидна взаємодія між тим, що хоче рушій, тим, що повідомляє драйвер, і тим, що ваша карта реально може тримати резидентним без пейджингу.
«Ultra» — це політика, а не обіцянка
«Ultra» не є універсальною одиницею. Це не «найкраще». Це не «правильно». Це набір виборів, зроблених студією під тиском часу, з неповною інформацією про вашу машину, фоні додатків, версію драйвера і вашу терпимість до підвисань.
Якість текстур — найпростіше місце, де «Ultra» може стати смішним, бо саме це налаштування може тихо вимагати найбільше VRAM, даючи найменше видимого покращення. Багато рушіїв охоче виділять собі пам’ять у глухий кут, а потім проведуть ваш бюджет часу кадру на сортування пам’яті.
Ось ментальна модель, яку я використовую в продукційних системах і в іграх: коли ви наближаєтесь до межі ємності, усе стає проблемою планування. Це не лише «закінчився VRAM?» Це «як часто я примушую звільнення, завантаження та декомпресію в найгірші моменти?»
Що варто робити за замовчуванням
- Починайте з High, а не з Ultra, навіть на потужній GPU. Потім вимірюйте. Якщо ви не помічаєте різниці в русі камери, не платіть за це підвисаннями.
- Тримайте запас по VRAM. Якщо ваш оверлей показує 95–100% VRAM у завантаженій сцені, ви не «ефективно використовуєте все». Ви ризикуєте пейджингом.
- Віддавайте пріоритет стабільним часам кадру над піковим FPS. Саме стрибки ви відчуваєте руками.
Цитата, яка варта стикера біля кожного перемикача «Ultra»: «Надія — не стратегія.»
— Джин Кранс
Текстури, VRAM і чому це стає дивним
Текстури великі, їх багато і вони не однакові. Повзунок «якість текстур» зазвичай змінює якусь суміш:
- Максимальне розділення текстур (наприклад, 2K → 4K)
- Зміщення міпів і правила резидентності (наскільки агресивно використовуються/тримаються нижчі міпи)
- За замовчуванням анізотропної фільтрації (іноді окремо, іноді в комплекті)
- Розмір пулу стрімінгу (скільки пам’яті рушій резервує для стрімінгу)
- Вибір формату стиснення для певних класів ресурсів (дуже різниться)
VRAM — це не єдиний «кошик». Це ієрархія: локальна відеопам’ять, плюс спільна/системна пам’ять, плюс те, що ОС/драйвер може підвантажувати/вивантажувати. Сучасні API (DX12/Vulkan) явніше показують бюджетування та резидентність пам’яті, але досвід все одно залежить від того, наскільки драйвер і рушій поводяться адекватно.
Математика текстур, яка робить «Ultra» дорогою
Поширений сюрприз: одиночна 4K текстура — це не «кілька мегабайт». Це залежить від формату та міпчейну. Орієнтовно:
- Некомпресована RGBA8 4K: 4096×4096×4 байти ≈ 64 МіБ для верхнього міпу, плюс ~33% для міпчейну → ~85 МіБ.
- BC7-компресована 4K: ~16 МіБ верхній міп, плюс міпчейн → ~21 МіБ.
Тепер помножте на: альбедо + нормалі + roughness/metalness/AO + емісивні + маски. Потім помножте на кількість унікальних матеріалів у полі зору, плюс «на всяк випадок» активи, які рушій тримає під рукою, бо має вгадати, куди ви повернетеся далі. Рахунок приходить швидко.
Короткий жарт №1: Текстури Ultra — це як нести холодильник повного розміру на пікнік. Технічно вражає; соціально під питанням.
Роздільна здатність — не той самий регулятор
Роздільна здатність екрана в основному впливає на render targets (колір, глибина, буфери постопрацювання) і вартість шейдингу. Якість текстур впливає головним чином на резидентність ресурсів. Ви можете грати в 4K з якістю High і почуватися нормально, а можете грати в 1080p з Ultra і мати катастрофу з підвисаннями. Це різні точки тиску.
Факти та контекст для вечірки (або розбору помилок)
- Міпмапінг старший за більшість ваших GPU. Його описали на початку 1980-х, щоб зменшити аліасинг і покращити поведінку кешу — він досі ключовий інструмент для стабільності.
- Консолі нормалізували фіксовані бюджети пам’яті. Ера «8 ГБ уніфікованої пам’яті» змусила студії дисциплінуватися щодо резидентності та стрімінгу, навіть якщо PC-порти іноді забувають цей урок.
- DX11 приховував багато проблем резидентності. Керована драйвером пам’ять спрощувала життя — поки не переставала; DX12/Vulkan зробили це явним, що чудово для продуктивності і жахливо для недбалих бюджетів.
- Стиснення текстур — це стратегія пропускної здатності, не лише трюк зі зберігання. Блокові формати стиснення (BCn/ASTC) зменшують слід VRAM і трафік пам’яті; це функція продуктивності.
- Нормалі часто важать більше, ніж альбедо. Люди думають про «кольорові текстури», але високочастотні карти нормалей всюди, і вони не дешеві.
- Віртуальні текстури («mega textures») — не новинка. Варіанти існували роками, але сучасні SSD і кращі GPU-таблиці сторінок зробили це практичним у великому масштабі.
- Звіти про VRAM не стандартизовані між інструментами. «Виділено», «комітовано», «резидентно» і «використовується» — різні стани; оверлеї часто їх перемішують.
- Resizable BAR може змінити відчуття при перенавантаженні. Це не збільшує VRAM, але може вплинути на поведінку передач і знизити деякі найгірші затримки.
- Пропускна здатність PCIe — це не пропускна здатність VRAM. Коли ви підвантажуєте текстури з системної пам’яті, ви покидаєте кількасот-GB/s шосе для значно більш вузької дороги з регульованим трафіком.
Що насправді відбувається, коли ви «закінчуєтеся» з VRAM
Здебільшого нічого драматичного не трапляється. Ніяких аварій. Ніяких помилок. Лише нестабільні часи кадру.
Під тиском VRAM система займається жонглюванням:
- Вивільненнями (evictions): виведення ресурсів з локальної VRAM, щоб звільнити місце.
- Завантаженнями (uploads): підвантаження текстур назад, коли вони потрібні.
- Зміною станів: змінами того, які міпи резидентні, іноді кілька разів на секунду.
- Синхронізацією: очікуванням завершення передач, фейнів або черг копіювання.
Режим відмови — це не «низький середній FPS». Це підвисання під час обертання камери, заїдання при вході в нову область або періодичні піки кожні кілька секунд. Це корелює зі стрімінговими подіями, компіляцією шейдерів або збиральником сміття — але тиск VRAM усе це посилює, бо все бореться за один обмежений пул резидентності.
Перепідписка VRAM: прихований податок
Коли «бюджет» рушія перевищує локальну VRAM, він все одно може працювати, спираючись на системну пам’ять (або, що гірше, файл підкачки). Це перепідписка. Уявіть, що ви запускаєте базу даних з кешем, більшим за RAM: вона технічно стартує, а потім усе життя проводить у трешингу.
Якщо ви запам’ятаєте одну практичну річ із цієї статті: тримайте робочу множину комфортно всередині VRAM. «Комфортно» означає залишати місце для стрибків, накладних витрат драйвера і того, що рушій не сказав вам, що він робить.
Короткий жарт №2: Увімкнути Ultra на карті з малим VRAM — чудовий спосіб пережити «завантажувальні екрани в реальному часі».
Швидкий план діагностики
Це порядок дій, який швидко виявляє вузьке місце, не перетворюючи ваш вечір на інтерпретативний танець перемикачів.
Перш за все: доведіть, чи це тиск VRAM
- Увімкніть оверлей VRAM (оверлей драйвера або в грі, якщо йому довіряєте) і відтворіть підвисання в тій самій сцені, яка відчувається погано.
- Слідкуйте за заповненням VRAM (95–100%) і піками часу кадру, що збігаються з рухом камери або переходами з великою кількістю ресурсів.
- Зменшіть якість текстур на одну щаблину (Ultra → High). Поки не змінюйте нічого іншого. Якщо піки суттєво зменшаться — ви знайшли важіль.
По-друге: відокремте VRAM від «усіх інших» причин підвисань
- Перевірте завантаження CPU по ядрах. Заціплене одне ядро може спричиняти затримки стрімінгу і виклики рендеру, які виглядають як проблеми VRAM.
- Перевірте ознаки компіляції шейдерів: піки, які з’являються першого разу при показі ефекту, а потім зникають.
- Перевірте I/O диска: якщо ваш диск на 100% активності під час стрімінгу, текстури приходять пізно незалежно від VRAM.
Третє: оптимізуйте для стабільності
- Встановіть текстури на найвищий рівень, який тримається в бюджеті у найгірших сценах.
- Обмежте FPS, щоб зменшити транзієнтні сплески навантаження і стабілізувати ритм.
- Налаштуйте параметри стрімінгу, якщо вони доступні (розмір пулу, дистанція префетчу). Більше не завжди краще; більше може означати «трешити повільніше, але довше».
Практичні завдання з командами (що це означає, що вирішувати)
Це навмисно нудно. Нудно — добре; нудно — повторювано. Команди припускають Linux з поширеними утилітами, бо саме там SRE-звички найпростіше демонструвати, але логіка застосовується всюди.
1) Визначте GPU і драйвер
cr0x@server:~$ lspci -nn | grep -Ei 'vga|3d|display'
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2782] (rev a1)
Що означає вивід: Підтверджує, яка GPU присутня і про який PCI-пристрій іде мова. Корисно при гібридній графіці або віддалених сесіях.
Рішення: Якщо GPU не та, яку ви думаєте, зупиніться і виправте це перед тонким налаштуванням.
2) Перевірте використання VRAM і споживачів по процесах для NVIDIA (якщо застосовно)
cr0x@server:~$ nvidia-smi --query-gpu=name,driver_version,memory.total,memory.used,memory.free --format=csv
name, driver_version, memory.total [MiB], memory.used [MiB], memory.free [MiB]
NVIDIA GeForce RTX 4070, 550.54.14, 12282 MiB, 10321 MiB, 1961 MiB
Що означає вивід: Загальний обсяг проти використаного і вільного VRAM. Якщо used високий під час підвисань — ви, ймовірно, на межі резидентності.
Рішення: Якщо «free» постійно менше ~10–15% у проблемній сцені, вважайте Ultra текстури підозрюваними до доведення зворотного.
cr0x@server:~$ nvidia-smi pmon -c 1
# gpu pid type sm mem enc dec fb command
0 28144 G 62 48 0 0 9920 game.bin
0 2331 G 2 1 0 0 180 Xorg
Що означає вивід: Швидкий огляд процесів, що споживають пам’ять кадру (fb). «mem» тут — відсоток використання, а не МіБ.
Рішення: Якщо фонові процеси тримають сотні МіБ (рекордери, браузери з апаратним прискоренням), вбийте або ізолюйте їх перед тим, як звинувачувати гру.
3) Перевірка інформації про пам’ять AMD GPU (якщо застосовно)
cr0x@server:~$ cat /sys/class/drm/card0/device/mem_info_vram_total
17179869184
cr0x@server:~$ cat /sys/class/drm/card0/device/mem_info_vram_used
12884901888
Що означає вивід: Сирі байти загальної і використаної VRAM, як їх повідомляє драйвер ядра.
Рішення: Перетворіть у GiB подумки (поділити на 1024^3). Якщо used близько до total під час підвисань — зменште текстури або знизьте інші функції, що важать багато VRAM (RT, високі тіні, великі кеші).
4) Переконайтеся, що лінк PCIe не занижений
cr0x@server:~$ sudo lspci -s 01:00.0 -vv | grep -E 'LnkCap|LnkSta'
LnkCap: Port #0, Speed 16GT/s, Width x16
LnkSta: Speed 16GT/s, Width x16
Що означає вивід: Можливість лінку проти фактично узгодженого лінку. Якщо ви на x4 або нижче, витрати на пейджинг болючіші.
Рішення: Якщо лінк несподівано понижений — пересуньте карту, перевірте BIOS і не женіться за налаштуваннями текстур одразу.
5) Перевірте завантаження CPU по ядру під час відтворення підвисання
cr0x@server:~$ mpstat -P ALL 1 5
Linux 6.5.0 (server) 01/21/2026 _x86_64_ (16 CPU)
12:04:10 PM CPU %usr %sys %iowait %idle
12:04:11 PM all 22.11 6.18 1.02 70.69
12:04:11 PM 7 92.00 5.00 0.00 3.00
Що означає вивід: Одне ядро (CPU 7) заціплене. Це може бути рендер-тред, тред стрімінгу або робота драйвера.
Рішення: Якщо одне ядро завантажено, коли трапляється підвисання, зниження текстур може допомогти побічно (менше роботи стрімінгу), але також спробуйте зменшити налаштування, що навантажують виклики рендеру (дальність огляду, щільність натовпу) і перевірте фонові процеси, що їдять CPU.
6) Перевірте затримку і завантаження накопичувача під час стрімінгу
cr0x@server:~$ iostat -xz 1 3
avg-cpu: %user %nice %system %iowait %steal %idle
21.2 0.0 6.1 1.0 0.0 71.7
Device r/s rkB/s await %util
nvme0n1 210.0 82000.0 3.20 62.0
Що означає вивід: «await» — середній час на I/O. %util показує насичення пристрою. Якщо await підскакує під час заїдань, диск у грі.
Рішення: Якщо %util близько до 100% і await високий під час заїдань — перенесіть гру на швидший SSD або зменшіть вимоги стрімінгу (текстури, дальність огляду).
7) Перевірте, чи гра не активно пейджить на рівні ОС
cr0x@server:~$ vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa
2 0 0 8123456 221000 9021000 0 0 120 340 900 2100 22 6 71 1
Що означає вивід: «si/so» — swap-in/out. Якщо вони ненульові під час підвисань, ви не лише вичерпали VRAM; у вас не вистачає системної пам’яті.
Рішення: Якщо відбувається свопінг: закрийте фонові додатки, додайте RAM, зменшіть якість текстур і переконайтеся, що файл підкачки/своп знаходиться на SSD і має розумний розмір.
8) Спостерігайте завантаження рушія GPU (перевірка здорового глузду)
cr0x@server:~$ sudo intel_gpu_top -s 200 -o -
requesting drm device 0, main kdev 0, minor 0
Render/3D 12.32% Blitter 0.00% Video 0.00%
Що означає вивід: На Intel iGPU показує, чи дійсно GPU зайнятий. Низьке завантаження при поганих часах кадру часто вказує на затримки CPU або пам’яті.
Рішення: Якщо завантаження низьке під час підвисання, не женіться за «більше GPU». Шукайте джерело затримки (пейджинг VRAM, CPU-тред, I/O, компіляція шейдерів).
9) Перевірте композитор / режим відображення (VRR і повноекранну поведінку)
cr0x@server:~$ xrandr --verbose | grep -E 'connected|vrr_capable|vrr_enabled'
DP-1 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis)
vrr_capable: 1
vrr_enabled: 1
Що означає вивід: Підтримка змінної частоти ввімкнена. VRR може маскувати невеликі варіації часу кадру, але не врятує від 200 ms заїдань.
Рішення: Якщо VRR вимкнено — увімкніть його для комфорту. Якщо VRR увімкнено і ви все одно заїдаєте — це великі сплески (стрімінг/пейджинг).
10) Підтвердіть файлову систему й вільне місце (стрімінг не любить повні диски)
cr0x@server:~$ df -hT /mnt/games
Filesystem Type Size Used Avail Use% Mounted on
/dev/nvme0n1p2 ext4 930G 870G 13G 99% /mnt/games
Що означає вивід: 99% заповнення — запах проблем із продуктивністю. Фрагментація і поведінка GC можуть підвищувати затримки.
Рішення: Звільніть місце. Спробуйте мати принаймні 10–15% запасу. Потім повторно перевірте підвисання перед тим, як чіпати інші налаштування.
11) Спостерігайте в реальному часі стрибки затримки I/O за допомогою iotop
cr0x@server:~$ sudo iotop -o -b -n 3
Total DISK READ: 75.21 M/s | Total DISK WRITE: 2.11 M/s
PID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
28144 be/4 cr0x 62.10 M/s 0.00 B/s 0.00 % 9.21% game.bin
Що означає вивід: Гра читає багато даних. Це нормально під час стрімінгу, але якщо це збігається з заїданнями і ваш диск повільний/насичений — ви знайшли причетного.
Рішення: Якщо швидкість читання висока і диск на межі — зменшіть вимоги стрімінгу (текстури/дальність) або перенесіть встановлення на швидший накопичувач.
12) Перевірте запас системної пам’яті
cr0x@server:~$ free -h
total used free shared buff/cache available
Mem: 32Gi 26Gi 1.2Gi 1.1Gi 4.8Gi 3.9Gi
Swap: 8Gi 0.0Gi 8Gi
Що означає вивід: «available» — це те, що важливо. Якщо воно низьке, ОС буде вести себе агресивно.
Рішення: Якщо доступної пам’яті менше ~3–4 GiB під час гри — очікуйте більше свопінгу і гірших підвисань при тиску VRAM. Закрийте додатки або додайте RAM.
13) Перевірте розмір і розташування кешу шейдерів (практична перевірка)
cr0x@server:~$ du -sh ~/.cache/* 2>/dev/null | sort -h | tail -n 5
1.2G /home/cr0x/.cache/mesa_shader_cache
2.8G /home/cr0x/.cache/game-shader-cache
Що означає вивід: Великі кеші шейдерів — нормальне явище. Якщо ваш домашній каталог на повільному диску або майже заповнений, компіляція шейдерів і запис кешів можуть викликати підвисання.
Рішення: Переконайтеся, що кеші знаходяться на SSD і є запас місця. Не видаляйте кеші регулярно «для оптимізації», якщо тільки ви не діагностуєте корупцію.
14) Виміряйте ритм кадрів через статистику present (базовий підхід)
cr0x@server:~$ mangohud --dlsym ./game.bin
MangoHud: HUD initialized
Що означає вивід: Ви запускаєте з оверлеєм часу кадру. Вас більше цікавить графік часу кадру, ніж число FPS.
Рішення: Якщо графік показує періодичні піки, які зникають після зниження якості текстур — це стрес стрімінгу/резидентності VRAM, а не дефіцит пропускної здатності GPU.
Три корпоративні міні-історії з польових боїв
1) Інцидент від неправильної припущення: «VRAM як RAM — просто кешуватиме краще»
Студія, з якою я працював (назвемо їх Компанія A), випустила PC-патч, який «покращував візуал» підвищенням стандартної якості текстур на потужніших GPU. Зміна була обґрунтована знайомою фразою: більшість карт зараз має достатньо VRAM, а невикористаний VRAM — марнотратство.
Вони тестували на кількох машинах у лабораторії. Частоти кадрів виглядали нормально. Аварій не було. Патч вийшов у вівторок, бо інакше бути не могло.
За кілька годин канали підтримки наповнилися повідомленнями: «мікроприхопи після 20 хвилин», «заїдання при повороті», «спочатку нормально, потім жахливо». Родзинка: багато скарг були з картами 8–10 ГБ, які мали бути «безпечними». Припущення провалилося, бо VRAM не пасивний кеш. Це обмеження резидентності, і рушії можуть робити погані ставки щодо майбутнього руху камери. Гравець з широким FOV, швидкими поворотами і транспортом на високій швидкості фактично став бенчмарком найгіршого випадку.
Після розбору зміна стандарту текстур підштовхнула типове використання VRAM від «комфортного» до «на межі», і політика вивільнення рушія почала осцилювати. Осциляція — ворог у будь-якій системі: коли ви трешите, робота, яку ви робите, створює ще більше роботи. Класична позитивна петля зворотного зв’язку.
Виправлення не було героїчним. Вони відкотили стандарт, додали попередження, яке відповідало пресетам текстур до запасу по VRAM, і налаштували пул стрімінгу на більш консервативну поведінку під тиском. Найбільший урок не був про текстури; він полягав у припущенні, що ємність поводиться лінійно. Вона — ні.
2) Оптимізація, що дала зворотний ефект: «Зменшимо пам’ять текстур агресивним зрізанням міпів»
Компанія B мала реальну проблему: на середньому класі GPU використання VRAM було занадто великим у щільних містах. Хтось запропонував ідею: динамічно зменшувати міпи агресивніше щоразу, коли VRAM наближався до бюджету. У теорії це тримало б гру в межах і уникнуло затримок.
Перший внутрішній тест виглядав багатообіцяюче. Використання VRAM вирівнялося. Менше жорстких зависань. Усі кивали головами. Потім QA почали робити те, що QA робить: стояти на місці і повільно обертати камеру, повторно, у тому самому місці.
Місто стало мерехтливим кошмаром. Текстури постійно «попали». Гірше того, рушій почав «йо-йо» міпами: знижує міпи, щоб звільнити пам’ять, з’являється вільне місце, рушій апгрейдить міпи знову, VRAM росте, знову зниження. Результат — стабільний VRAM, але нестабільна візуальна ситуація і безупинна фоновна робота. Вони обміняли один вид підвисань на інший: замість рідкісних великих затримок отримали постійний дрібний джанк.
З системної точки зору, вони реалізували контролер без демпфування і з надто агресивними порогами. Це термостат, який вмикає обігрівач на повну при 19.9°C і вимикає при 20.0°C. Вітаємо, ви винайшли осциляцію.
Зрештою, виправили додаванням гістерезису (не апгрейдити міпи одразу після зниження), обмеженням швидкості зміни міпів за секунду і перевагою зменшення майбутніх запитів стрімінгу над вивільненням видимих активів. «Оптимізація» була не неправильна; вона була неповною. У роботі з продуктивністю неповне — це спосіб вчасно випустити нові проблеми.
3) Нудна, але правильна практика, що врятувала ситуацію: «Бюджети, інструментація і жорстке «ні» мовчазним дефолтам»
Компанія C не мала найгламурнішого рушія, але мала дисципліну, що здавалася майже старомодною: таблиця бюджету VRAM для кожної платформи й рівня якості, яка переглядалася як SLO. Не «приблизно». Реальна таблиця.
Кожна збірка збирала телеметрію з внутрішніх тестів: пікова резидентність текстур, середня глибина черги стрімінгу, кількість вивільнень за хвилину, найгірший процентиль часу кадру. Якщо ви змінювали пресети текстур — мусили показати метрики. Якщо додавали нову бібліотеку матеріалів — мусили показати вплив на бюджет. Якщо не могли — зміна не потрапляла в реліз.
Коли пізній контент підтискав карту міста близько до бюджету, вони не панікували. Вони вже знали, які групи активів найбільші порушники. Вони знизили роздільність кількох карт нормалей, підкорегували кілька інстансів матеріалів і замінили кілька «геройських» пропсів, що не заслуговували на героїчні текстури.
Реліз усе одно мав баги, бо програмне забезпечення завжди має. Але в них не сталося фіаско «Ultra робить гру підвисати на звичайному залізі». Нудна практика — бюджети, інструментація і відмова від мовчазних змін — зробила те, що нудні практики роблять: запобігла яскравим відключенням.
Поширені помилки: симптом → корінна причина → виправлення
1) «FPS високий, але при повороті відчувається жахливо»
Корінна причина: затримки стрімінгу текстур або перепідписка VRAM, що спричиняє вивільнення/завантаження під час руху камери.
Виправлення: Зменште якість текстур на одну щаблину; зменшіть дальність огляду; переконайтеся, що гра на SSD; тримайте VRAM під ~85–90% у найгірших сценах.
2) «Зниження роздільної здатності не виправило підвисання»
Корінна причина: ви зменшили навантаження на render-target, але вузьке місце — резидентність ресурсів і стрімінг, а не шейдинг пікселів.
Виправлення: Зменшіть текстури і/або налаштування стрімінгу; зменшіть високі тіні; відключіть пакети високої роздільності текстур, що перевищують ваш VRAM.
3) «Працює нормально 10 хвилин, потім гіршає»
Корінна причина: робоча множина зростає під час проходження; кеші заповнюються; фонові додатки підкрадаються; VRAM фрагментується або бюджет зменшується через інші алокації.
Виправлення: Закрийте GPU-важкі фоніві додатки; перезапускайте гру між довгими сесіями як тимчасовий обхід; налаштуйте текстури під найгірші ділянки, а не під навчальну зону.
4) «Ultra текстури виглядають як High, але продуктивність падає»
Корінна причина: обмеження не у деталізації, а у сліді пам’яті/пропускній здатності. Багато сцен у русі все одно обмежені міпами.
Виправлення: Залишайте High. Витратьте бюджет на анізотропну фільтрацію (зазвичай недорога) або кращі налаштування освітлення, які реально змінюють вигляд сцени.
5) «На Medium стрибок поп-іну текстур жахливий»
Корінна причина: пул стрімінгу занадто малий або надмірно агресивне зміщення міпів, що спричиняє помітні переходи міпів.
Виправлення: Збільшіть якість текстур на одну щаблину або збільшіть пул стрімінгу, якщо рушій це дозволяє — але лише якщо у вас є запас по VRAM.
6) «Оверлей VRAM каже, що я використовую 11 GB на карті 12 GB, тож усе добре»
Корінна причина: «майже повний» — не означає, що добре. Виникають сплески. Є накладні витрати драйвера. Рушій може миттєво виділити буфер під час переходів.
Виправлення: Майте буфер. Розглядайте 90% як «жовтий» стан, а не «зелений» у сценах, де гра кульгає.
7) «Після ввімкнення трасування променів текстури почали підвисати»
Корінна причина: RT часто виділяє великі буфери (BVH, історія денойзера, додаткові render targets), що зменшує VRAM, доступний для текстур.
Виправлення: Якщо хочете RT — знизьте текстури або тіні. Якщо хочете чіткі текстури — зменште RT. Обирайте одне «розкішне» налаштування одночасно, якщо у вас немає серйозного запасу VRAM.
8) «Я встановив пакет високої роздільності текстур і тепер усе гальмує»
Корінна причина: пакет збільшив робочу множину понад VRAM; пейджинг по PCIe тепер частина циклу кадру.
Виправлення: Видаліть пакет або погодьтеся на нижчі текстури в інших місцях. Пакети високої роздільності — це не «безкоштовні оновлення». Це рішення про ємність.
Чеклісти / покроковий план
Чекліст A: вибрати правильний рівень текстур за 15 хвилин
- Знайдіть найгіршу сцену: щільне місто, багато унікальних матеріалів, швидкий рух.
- Увімкніть оверлей часу кадру (не лише FPS).
- Встановіть текстури на Ultra; грайте 2 хвилини; зафіксуйте пікове VRAM і найгірші часи кадру.
- Встановіть текстури на High; пройдіть той самий шлях; порівняйте піки і VRAM.
- Якщо High прибирає основні піки і Ultra не дає помітного покращення в русі — залишайте High.
- Якщо Ultra працює плавно і у вас ще 10–20% VRAM в запасі у найгіршому випадку — вітаю: Ultra — для вас.
Чекліст B: стабілізувати систему, що підвисає під навантаженням VRAM
- Закрийте GPU-важкі фоніві додатки (браузери з багатьма вкладками, програми для запису, непотрібні оверлеї).
- Переконайтеся, що гра встановлена на SSD з >15% вільного місця на тому томі.
- Зменшіть текстури на одну щаблину; повторно перевірте.
- Якщо ще погано: зменшіть RT/роздільність тіней; повторно перевірте.
- Трохи обмежте FPS нижче вашого типового середнього (наприклад, 120 → 90, 60 → 50). Це зменшить сплески.
- Тільки потім розгляньте масштабування роздільності.
Чекліст C: правила «Ultra без жалю»
- Ultra текстури виправдані, коли у вас є запас VRAM у найгірших сценах і ви граєте повільно, щоб помітити дрібні деталі поверхні.
- Ultra текстури невиправдані, коли вони штовхають VRAM до межі, особливо в іграх з відкритим світом.
- Якщо ви стрімите контент (знімаєте/кодуєте) під час гри, розраховуйте, що вам знадобиться більше запасу, ніж для «чистого» ігрового сценарію.
- Якщо гра має «пакет високої роздільності текстур», сприймайте його як апаратну вимогу, а не косметичний аддон.
Поширені питання
1) Чи має використання VRAM бути майже 100%?
Ні. Здорова система використовує VRAM, але тримає запас. 95–100% у вимогливих сценах — це початок пейджингу й штормів вивільнень.
2) Чому текстури спричиняють підвисання частіше за інші налаштування?
Тому що текстури великі й численні, і штраф за відсутність потрібної текстури часто є синхронним очікуванням: вивільнити, завантажити, декомпресувати, а потім відмалювати.
3) Якщо в GPU досить обчислень, чому він не може «проторувати» через це?
Обчислення не допоможуть, якщо дані не резидентні. Швидкий GPU, що чекає на завантаження текстури, все одно чекає. Це не змагання сил; це логістична проблема.
4) Чи зниження роздільної здатності зменшить використання VRAM?
Зменшить пам’ять render-target і частину кешів, але може не суттєво вплинути на резидентність текстур. Тому зниження роздільності часто не вирішує проблему, спричинену текстурами.
5) Чи «High» і «Ultra» текстури помітно відрізняються?
Іноді в нерухомих кадрах. Часто — не в русі, особливо з TAA, розфокусуванням і типовими відстанями камери. Якщо ви не бачите різниці під час гри — не платіть податок VRAM.
6) У чому різниця між «виділено» VRAM і «використано» VRAM?
Виділено може означати зарезервовану адресну область або комітовані ресурси. Використано/резидентно означає фактичне зайняття локальної VRAM. Інструменти різняться; не вважайте один оверлей авторитетним бездумно.
7) Чи може SSD вирішити проблеми VRAM?
SSD допомагає стрімінгу, але не резидентності. Він може зменшити тяжкість заїдань, роблячи дані швидше доступними, але не замінить пропускну здатність і затримки локальної VRAM.
8) Чи варто відключати стрімінг текстур?
Лише якщо гра це добре підтримує і у вас величезний запас VRAM. Вимкнення стрімінгу часто збільшує час початкового завантаження і може підвищити загальну вимогу до VRAM. Тестуйте, не вгадуйте.
9) Чому трасування променів впливає на гладкість текстур?
Функції RT споживають VRAM для структур прискорення і буферів історії. Це зменшує пам’ять, доступну для резидентності текстур і пулів стрімінгу.
10) Яке одне налаштування найкраще для якості/вартості, якщо зменшувати текстури?
Анізотропна фільтрація зазвичай недорога і покращує чіткість текстур під кутом. Тримайте її високою, поки тонко налаштовуєте роздільність текстур.
Наступні кроки, які ви реально можете зробити
Якщо ваш підхід наразі «встановити все на Ultra і сподіватися», замініть його процесом:
- Виберіть найгіршу сцену і виміряйте VRAM та піки часу кадру.
- Знизьте текстури на одну щаблину і пройдіть той самий шлях. Якщо піки зменшилися — залишайте цей рівень і йдіть жити далі.
- Захистіть запас: прагніть піків VRAM, що залишають 10–20% вільними в важливих сценах.
- Витрачайте бюджет там, де відчуваєте: стабільний ритм кадру, розумні тіні і AF краще за пафосні показники.
- Коли змінюєте одне, змінюйте лише одне. Налаштування — це відладка, а не ритуал.
Ultra — це не знак честі. Це політика ресурсів. Робіть її політикою, яку ви можете собі дозволити.