Уже ранее рассматривал "производительность" в гта4. Не стал создавать новую тему, буду писать здесь.
На этот раз немного рассмотрел Crysis. Уже пользовался не RivaTuner, а более солидным ПО
- . Как Вы поняли эта прога не работает на картах АМД/АТИ:) PerfHud запускал через nvphforce, так как мало где он работает, либо вообще ничего не показывается в играх, либо они вылетают с ошибкой.
Конфиг компа: см. выше.
Настройки игры: разрешение 1440*900; настройки игры - все на максимум; AA, т. е. сглаживание отключено; драйвер 181.20; настройки драйвера по умолчанию.
В NVIDIA PerfHUD много счетчиков производительности. Все не использовал. Как известно, в Висте нельзя смотреть потребление видеопамяти в играх, например такой прогой как RivaTuner, которая в Хp показывает такие данные. В PerfHUD это возможно.
Использовал следующие:
Вверху экрана слева
FPS: - обозначает кадры в секунду (здесь берется среднее за 20 кадров;... производительность игр падает, когда запускать их под PerfHUD'ом )
Tris/Frame - полное количество необработанных видеокартой примитивов - точек, линий, т. е. геометрия; которые не прошли блок обработки геометрии в видеокарте. Данные показываются за один кадр.
Speed - скорость, т. е. обновление счетчиков в реальном времени.
Далее разные оверлейные окна, кот. можно самому создавать, выбирая соответствующие счетчики.
setup triangle count - конечное число обработанных треугольников или полигонов в кадре.
batch count - число батчей или вызовов отрисовки за один кадр, т. е. число обращений процессором к видеокарте. Важный параметр, определяющий нагрузку на процессор. Чем меньше батчей ( в переводе "пачка" или же "пакет") тем лучше, т. е. меньше нагрузка на процессор. Процессор в играх, кроме как расчетов физики и AI - искусственный интелект, строит "каркас" изображения и посылает данные (примитивы и прочее) видеокарте для их последующей обработки. Много процессорного времени отжирают батчи. Но чем больше примитивов - геометрии в игре, тем по идее больше должно быть батчей. НО! смотрим дальше..
avg batch size - средний размер батча - количество примитивов в одном батче. Чем больше размер батча тем меньше их суммарное число batch count. Т. е. нужно стремиться увеличивать размер батча для меньшего количества вызовов отрисовки batch count.
Средним количеством батчей приблизительно можно считать 2000-3000. В играх где велико число батчей, можно сказать являются процессорозависимыми в некотором роде. Если умножить avg batch size на batch count получится примерно Tris/Frame.
Можно посмотреть обзоры с игр здесь, где есть числа полигонов в кадре
VA (%) - input_assembler_busy — доля занятости работой блока input assembler. Этот блок выбирает геометрические и другие данные из памяти для использования другими блоками GPU и при его слишком большой загрузке общая скорость рендеринга может быть ограничена.
SHD - загрузка шейдерного блока (процессоров)
TEX - загрузка текстурного блока - это блок выборки и фильтрации (анизатропная и др.) текстур
ROP - Блоки растеризации осуществляют операции записи рассчитанных видеокартой пикселей в буферы и операции их смешивания (блендинга). Этот блок слабо загружен, производительность в него не упирается в современных видеокартах.
VS - загрузка вершинных шейдеров, кот. обрабатывают геометрию.
GS - геометрические шейдеры (только в DX10)
PS - пиксельные шейдеры, главная часть видеокарты.
Внизу окно показывающее загрузку видеопамяти.
T (MB) - память отданная текстурам.
R (Mb) - render target или back buffer - внеэкранный буфер.
B (MB) - front Buffer - экранный буфер.
Front Buffer (первичный буфер) - это область памяти, из которой изображение выводится на экран.
Back Buffer (вторичный буфер) - это область памяти, в которой рассчитываются елементы 3D сцены. Вывод изображения на экран осуществляется через первичный буфер (Front Buffer).
Frame Buffer (Кадровый буфер) – Участок видеопамяти, в котором осуществляется формирование изображения. Используется двойная или (реже) тройная буферизация. Первый (передний – front) выводится на экран, выведен на экран, а во второй (задний – back) выполняется рендеринг. Как только второй буфер готов, они меняются, и всё происходит снова (В случае тройной есть ещё промежуточный буфер). Это позволяет избежать подёргивания и мерцания изображения.
Подробнее за render target
Загрузка пиксельных шейдеров на удивление в Crysis не 100%)). Число батчей в игре выше среднего. Загрузка видеопамяти на таких настройках 500 с лишним мегабайт, данные в память видимо грузятся сразу после загрузки игрового уровня, подгрузок не заметил. Самое большее загружен шейдерный блок, впрочем как и всегда в любой игре. Потом текстурный блок ну и самое меньшее ROP. Tris/Frame в игре большое почти всегда, в игре много примитивов. Количество полигонов тоже не маленькое). В среднем, за время теста, GPU - полностью видеокарта, был загружен примерно на 75-80%, максимальные значения конечно достигали порядка 100%.
Но почему так не сильно загружена видеокарта, в частности PS и SHD ?? А ответ, в чем я уверен, в том, что много в игре батчей и процессор попросту не успевает загружать по максимуму видеокарту и она часть времени простаивает. Текстуры занимают не много памяти, наверно из-за того, что они повторяются в кадре; большая часть памяти отведена буферам.
Видно, что число батчей может достигать примерно 5000, а это много. Это воможно из-за того, что игра не оптимизирована должным образом (взять пример Call of Juares, там батчей мало - игра хорошо оптимизирована в этом плане) либо списать на большое число в игре примитивов, полигонов. Нужен соответствующий процессор, чтобы справляться с таким числом батчей...
Пиковое число полигонов в кадре достигает приблизительно полтора миллиона, что много; в других сценах наверно может быть даже и больше. А Tris/Frame достигает более 3 миллионов !!
Все. Если где то не прав поправляйте