Показать сообщение отдельно
Старый 01.06.2018, 22:28   #13217
Пугатель
 
Аватар для [CCCP] Monster

 
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,105
Репутация: 1085 [+/-]
Стоит ли апгрейдить видеокарту и "раскроет" ли ее потенциал тот или иной процессор?

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

И вот почему.

Видеокарта работает не самостоятельно по своему разумению, рендеря что в комманд буфер взбредет, а получает команды, предварительно сформированные приложением игры. Суть утверждения "раскрыть потенциал видеокарты процессором" кроется в мысли "успевает ли процессор выдавать команды рендеринга видеокарте так, чтобы она визжала как последняя куртизанка". И проблема ответа на этот вопрос заключается в том, что разные игры построены на разных движках, а движки по-разному используют вычислительные мощности процессоров, поэтому нельзя однозначно сказать, что все будет хорошо. Кстати, процессор оперирует еще и разными видами памяти, и если кэшем в целом все ясно, то ОЗУ, хранящая большую часть данных, с которыми оперирует процессор, может вносить не меньший вклад на скорость выдачи команд видеокарте.

А, да, многопоточность. Нынче все продвинутые двигатели имеют отдельный рендер-тред для обработки команд рендеринга (В UE4 можно даже полюбоваться на время, проведенное процессором на рендер-треде с помощью консольной команды stat unit). Так вот, программисты в целом имеют разную дистанцию между точками, откуда руки растут и жопой. А потоки надо синхронизировать, а здесь много кто лажает. Поэтому даже крутой процессор может не помочь против остановок ожидания освобождения ресурсов.

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

1. Изменить разрешение картинки на минимально возможное. Это позволит максимально снизить pixel-pressure: нагрузку на GPU, которую обеспечивают все техники, завязанные на работу с пикселями: весь постпроцессинг, deferred shading, формирование G-Buffer'а и т.п.

2. Если в игре настраивается разрешение теней, то уменьшить разрешение на максимально возможное.

3. Если в игре используются каскадные тени, выставить количество каскадов на то максимальное значение, на котором вы хотели бы играть на новой видяхе.

Тут нужно пояснение: каскадные тени это техника создания теней на открытых пространствах с помощью карт теней (shadow maps). Используется несколько буферов глубины, в которые рендерится сцена из камер с разным охватом площади. В результате получается, что ближние объекты получают более подробную карту теней, а по мере удаления от игрока используется информация, попавшая в карту теней большего охвата территории, что позволяет сэкономить видеопамять и ресурсы блоков растеризации и при этом не ухудшить картинку.

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

А это значит, что для каждого каскада существует своя камера. И для каждой камеры нужно вычислять, какие объекты попадают в кадр, а какие нет. Если движок не использует непрямой рендеринг и отсечение видимых объектов на GPU (Indirect Drawing + GPU Culling), а на данный момент еще ни один движок так не поступает, все эти вычисления выполняются на процессоре.

4. Выставить качество граифики на желаемое после покупки новой видеокарты. Здесь все просто: многие подходы требуют участия процессора в формировании данных для алгоритма, поэтому нужно, чтобы они работали в полную силу.

5. Качество текстур. Тут вопрос сложный: если у вас совсем уж калькулятор, в котором пауки свили парк развлечений и катаются на вентиляторе, то там может не хватить памяти даже на то, чтобы просто загрузить все эти текстуры высокого разрешения в видеопамять и драйвер будет вынужден свапать то, что не влезло, в системную память, вытаскивая по мере необходимости обратно. Разумеется, такое изнасилование PCI-E шины для производительности даром не пройдет, поэтому рекомендую пользоваться различными утилитами, способными показывать занятую видеопамять, и подобрать такие значения качества текстур, чтобы оставалось еще минимум 30-40% свободного места (ваша игра - это не единственный потребитель видеопамяти в системе). Кроме того в случае, например, со встроенными видеокартами, они будут нагло часть памяти отжирать у системы, снова гоняя данные по PCI-E, что также плохо скажется на производительности, а мы рассматриваем результат установки новой дискретной видеокарты, и если в результате в наши замеры прокрадется огрех от несштатного падения скорости из-за нерационального использования видеопамяти, у нас ничего путного не получится.

6. Запускаем игру и смотрим результат по кадрам в секунду.

Суть метода в следующем: мы по максимуму исключаем вклад видеокарты в общее время рендеринга кадра, и таким образом оставляем только ту часть, которая принадлежит процессору, в полном объеме, а то, что делает видеокарта, стараемся уменьшить до минимального. Правда, есть проблема, связанная с количеством полигонов, которое от разрешения картинки зависеть не будет, но тут уж деваться некуда.

Так вот, ФПС, который показывает игра с такой конфигурацией, будет максимально достижимым ФПС с новой видеокартой. Если он недостаточен, нужно апгрейдить и процессор тоже (а то и ОЗУ).

Если кратко, то вот так. Потом, вероятно, добавлю картинки для иллюстрации описанных действий.
__________________
Служу Советскому Союзу!

Хорошо смеется тот, кто стреляет первым! (танкистская мудрость)

Последний раз редактировалось [CCCP] Monster; 04.06.2018 в 16:21.
[CCCP] Monster вне форума  
Отправить сообщение для [CCCP] Monster с помощью Skype™ Ответить с цитированием