Как 3D-игры настолько эффективны? - PullRequest
189 голосов
/ 07 февраля 2010

Есть кое-что, чего я никогда не понимал. Как может такая большая игра для ПК, как GTA IV, использовать 50% моего процессора и работать со скоростью 60 кадров в секунду, в то время как демонстрация DX с вращающимся чайником @ 60fps использует колоссальные 30%?

Ответы [ 17 ]

2 голосов
/ 24 ноября 2015

Демонстрация чайника DX не использует 30% ЦП, выполняя полезную работу. Он занят ожиданием, потому что ему больше нечего делать.

2 голосов
/ 27 апреля 2011

посмотрите ответ на vsync;именно поэтому они работают с одинаковой частотой кадров.

Во-вторых, ЦП в игре лидирует.Упрощенное объяснение состоит в том, что основной игровой цикл - это просто бесконечный цикл:

while(1) { 
  update();
  render();
}

Даже если ваша игра (или, в данном случае, чайник) не приносит больших результатов, вы все равно съедаете процессор в своем цикле.

50% ЦП в GTA "более продуктивен", чем 30% в демоверсии, так как более чем вероятно, что он мало что делает;но GTA обновляет тонны деталей.Даже добавление «Sleep (10)» в демонстрационную версию, вероятно, приведет к падению его ЦП на тонну.

Наконец, посмотрите на использование графического процессора.Демонстрация, вероятно, занимает <1% на современной видеокарте, в то время как GTA, вероятно, будет брать большинство во время игры. </p>

Короче, ваши тесты и измерения не точны.

2 голосов
/ 14 декабря 2010

Я думаю, вам стоит взглянуть на использование графического процессора , а не на процессор ... Бьюсь об заклад, графическая карта в GTA IV намного загруженнее, чем в образце Teapot (она должна быть практически бездействующей).

Может быть, вы могли бы использовать что-то вроде этого монитора, чтобы проверить, что:

http://downloads.guru3d.com/Rivatuner-GPU-Monitor-Vista-Sidebar-Gadget-download-2185.html

Также следует учитывать частоту кадров, возможно, образец чайника работает на полной скорости (возможно, 1000 кадров в секунду), и большинство игр ограничены частотой обновления монитора (около 60 кадров в секунду).

2 голосов
/ 14 декабря 2010

Как может такая большая игра для ПК, как GTA IV, использовать 50% моего процессора и работать на скорости 60 кадров в секунду, в то время как демонстрация DX вращающегося чайника @ 60 кадров в секунду использует колоссальные 30%?

Несмотря на то, что GTA, скорее всего, будет более эффективным, чем DX-демо, измерение эффективности ЦП таким способом существенно нарушено. Эффективность может быть определена, например, сколько работы вы делаете в данный момент времени. Простой контрпример: порождает один поток на логический процессор и позволяет запустить на нем простой бесконечный цикл. Вы получите нагрузку на процессор на 100%, но она неэффективна, поскольку никакой полезной работы не сделано.

Это также приводит к ответу: как игра может быть эффективной? При программировании «великих больших игр» огромные усилия направляются на оптимизацию игры во всех аспектах (которая в настоящее время обычно также включает многоядерные оптимизации). Что касается демо-версии DX, то здесь дело не в быстроте, а в демонстрации концепций.

1 голос
/ 12 июня 2012

Я думаю, что здесь отсутствует важная часть ответа. Большинство ответов говорят вам «Знай свои данные». Дело в том, что вы должны, точно так же и с той же степенью важности, также знать свое:

  • ЦП (часы и кеши)
  • Память (частота и задержка)
  • Жесткий диск (с точки зрения скорости и времени поиска)
  • GPU (# ядро, часы и память / кэш)
  • Интерфейсы: контроллеры Sata, версии PCI и т. Д.

НО , вдобавок ко всему, на современных современных компьютерах вы никогда не сможете воспроизводить настоящее видео 1080p со скоростью >> 30 футов в секунду (одно изображение 1080p в 64 битах займет 15 000 ко / 14,9 МБ). Причиной этого является выборка / точность. В видеоигре никогда бы не использовалась двойная точность (64 бита) для пикселей, изображений, данных и т. Д., А вместо этого использовалась бы более низкая пользовательская точность (~ 4-8 бит), а иногда и меньшая точность, масштабируемая с помощью методов интерполяции, чтобы обеспечить разумные вычисления время.

Существуют и другие методы, такие как отсечение данных (как в стандарте OpenGL, так и в программной реализации), сжатие данных и т. Д. Также следует помнить, что текущие графические процессоры могут быть в> 300 раз быстрее, чем текущие центральные процессоры. аппаратные возможности. Тем не менее, хороший программист может получить коэффициент в 10-20 раз, если ваша задача не будет полностью оптимизирована и полностью распараллеливаема (особенно распараллеливаемая задача).

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

Итак, чтобы вернуться к чайнику, вы должны увидеть, как геометрия представлена, сэмплирована и с какой точностью V видна в GTA 5, с точки зрения геометрии / текстур и, самое главное, деталей (точность, сэмплирование и т. Д.). )

1 голос
/ 23 сентября 2010

Из того, что я знаю о серии Unreal, некоторые соглашения нарушены как инкапсуляция. Код компилируется в байт-код или напрямую в машинный код в зависимости от игры. Кроме того, объекты визуализируются и упаковываются в виде сетки, а такие вещи, как текстуры, освещение и тени, предварительно рассчитываются, тогда как для чистой трехмерной анимации это требуется в реальном времени. Когда игра на самом деле запущена, есть также некоторые оптимизации, такие как рендеринг только видимых частей объекта и отображение деталей текстуры только при приближении. Наконец, вполне вероятно, что видеоигры предназначены для того, чтобы максимально эффективно использовать платформу в данный момент времени (например: Intelx86 MMX / SSE, DirectX, ...).

1 голос
/ 07 февраля 2010

Суть любого ответа должна быть такова: преобразования, которые выполняют трехмерные движки, в основном указываются в сложениях и умножениях (линейная алгебра) (без ветвей или переходов), операции рисования одного кадра часто задаются в Таким образом, несколько таких заданий аддона могут выполняться параллельно. Ядра GPU очень хороши для добавления дополнений, и они имеют десятки или сотни ядер добавления дополнений.

ЦП остается выполнять простые вещи - например, ИИ и другую игровую логику.

...