В какой-то момент я заметил, что от былых достижений в скорости отрисовки не осталось и следа: полтора миллиона полигонов выводились не в 90fps (~11ms), а в 30. Сначала я подумал, что что-то сломал. Долго всё перепроверял, оптимизировал, улучшал, в итоге подобными ухищрениями удалось ускорить отрисовку до 40 fps (~20ms), но это всё равно было в два раза медленнее прежнего результата. Чуть позже я случайно обнаружил, что былая скорость возвращается, если запустить приложение сразу после перезагрузки компьютера, но если сделать это хотя бы через пару минут простоя, тормоза снова одолевают.
при нехватке видеопамяти, драйвер прозрачно начинает пользоваться оперативнойВообще, про эту фичу не то чтобы много кто в курсе. Помню ещё одному типу сказал, что видеокарта начинает заимствовать ОЗУ при нехватке своей памяти, так он меня долбоёбом назвал и даже слушать не стал. Хотя даже в диспетчере задач указан объём ОЗУ, который винда готова предоставить видеокарте, под названием "общая память графического процессора".
Но это конечно чисто костыль, чтоб приложение не крашилось при превышении объёма VRAM. Производительность сразу нахуй идёт.
наоборот странно что кто-то этого не знал. Винда всегда при нехватке оперативки лезет в файл подкачки на диске, а видеокарты при нехватке своей памяти, в оперативку. Не дураки делали операционные системы. Всё заранее продумано и реализовано так, чтобы сократить вылеты по банальным причинам типа нехватки видеопамяти.
Я знал об использовании оперативки в качестве видеопамяти ещё в 2010-ом, когда начал смотреть тесты железа в играх. Там часто была статистика потребления видеопамяти и оперативки. И всегда было видно что чем меньше у видеокарты видеопамяти, чем больше потребление оперативки. Даже встроенная в процессоры графика всю жизнь использует оперативку под видеопамять. Раз встроенные в проц графические ядра могут использовать оперативку под свои нужды, то очевидно что и дискретные могут тоже самое. И не только диспетчер задач показывает виртуальную память видеокарты. Даже сам факт того, что игры, требующие кучу видеопамяти не вылетают за старых затычках, а просто выдают 5fps говорит о том, что видеокарта всегда найдёт что использовать в качестве памяти. Нехватки не будет никогда. Будет лишь снижение скорости передачи данных из-за использования заведомо более медленного устройства в качестве памяти. Во многих играх даже есть индикация того, сколько видеопамяти потребляют выбранные настройки качества. И при превышении объёма памяти видеокарты игры всё также запускаются и работают. Уже одного этого факта должно быть достаточно чтобы люди догадались что под видеопамять используется что-то ещё. И абсолютно очевидно что это оперативка, т.к. чаще всего она никогда не загружена на 100% и она вторая по скорости передачи данных в компе после видеопамяти.
Хех, да я сам даже был в курсе, но понять, что вот это вот прямо сейчас происходит, не удалось - впервые с этим сталкиваюсь на практике. Зато теперь, когда симптомы известны, всюду мерещится переполнение видеопамяти :).
Странно такие вещи отрицать, далбаеб видимо он сам кто отрицает, если врам Рип, то активно начинается все это лезь в рам, а если рам маловато то на хдд/ссд.
Краш очень быстро наступает если ещё откл файл подкачки при недостаточной памяти.
Хотя даже в диспетчере задач указан объём ОЗУ, который винда готова предоставить видеокарте, под названием "общая память графического процессора".У меня 32 ГБ оперативной памяти и 16 ГБ видеопамяти. И винда готова выделить видеокарте еще 16 ГБ. Получается она может выделить максимум половину оперативной памяти?
Очень интересный рассказ получился. А подскажи, у тебя движок с нуля написан или дарк енджин лежит в основе? Почему ты говоришь именно о том, что делаешь это под старые игры Thief, System Shock? Какого уровня ты хочешь добиться в итоге?
Движок написан с нуля на C++. Он просто поддерживает форматы ресурсов Dark Engine: модели, миссии, текстуры. Сделать игру можно будет любого уровня графики (не, нанит, конечно, но это мы ещё посмотрим 🤣), планируется PBR, виртуальные текстуры и тени (я называю это стримингом).
Но для своих игр, я не планирую фотореалистичную графику, поскольку считаю, что она вредит погружению. Много раз об этом писал, если вкратце - из-за "зловещей долины", когда графика почти реальна, человек воспринимает её как реальность и требования у него к ней соответствующие, и как только он видит деталь или поведение, этой реальности не соответствующее, погружение рушится. Когда же графика стилизованная, то начинает работать мозг и достраивает в голове недостающие детали. Как результат - глубочайший уровень погружения, главное - держать всё в едином стиле, сбалансированно.