Є щось, чого я ніколи не розумів. Як така велика велика гра на ПК, як GTA IV, може використовувати 50% мого процесора та працювати зі швидкістю 60 кадрів в секунду, тоді як демонстрація DX обертового Teapot @ 60fps використовує колосальні 30%?
Є щось, чого я ніколи не розумів. Як така велика велика гра на ПК, як GTA IV, може використовувати 50% мого процесора та працювати зі швидкістю 60 кадрів в секунду, тоді як демонстрація DX обертового Teapot @ 60fps використовує колосальні 30%?
Відповіді:
Взагалі, це тому, що
Наприклад, одна проста оптимізація, яку ви можете зробити, включає насправді не намагання намалювати речі, які не можна побачити. Розгляньте складну сцену, як міський пейзаж від Grand Theft Auto IV . Відображувач насправді не рендерує всі будівлі та споруди. Натомість він відображає лише те, що може бачити камера. Якби ти міг пролетіти до задньої частини тих же будівель, звернених до оригінальної камери, ти побачив би напівзбудовану вигорнуту структуру корпусу. Кожна точка, яку камера не бачить, не відображається - оскільки ви її не бачите, не потрібно намагатися показувати її вам.
Крім того, оптимізовані інструкції та спеціальні методи існують, коли ви розробляєте для певного набору апаратних засобів, щоб забезпечити ще кращі прискорення.
Інша частина вашого питання полягає в тому, чому демо використовує стільки процесора:
... а демонстрація DX обертового чайника @ 60 кадрів в секунду використовує колосальні 30%?
Демоси графічних API (наприклад dxdemo
) зазвичай повертаються до того, що називається програмним рендером, коли ваше обладнання не підтримує всі функції, необхідні для показу гарного прикладу. Ці функції можуть включати такі речі, як тіні, відображення, відстеження променів, фізика тощо.
Це імітує функцію повністю повнофункціонального апаратного пристрою, який навряд чи існує, щоб показати всі можливості API. Але оскільки обладнання фактично не існує, він замість цього працює на вашому процесорі. Це набагато неефективніше, ніж делегування на відеокарту - отже, високе використання процесора.
Терпіння, технічна майстерність та витривалість.
Перший момент полягає в тому, що DX Demo - це насамперед навчальний посібник, тому це робиться для наочності, а не швидкості виконання.
Це досить велика тема конденсації, але розробка ігор - це насамперед про розуміння ваших даних та шляхів виконання майже до патологічної міри.
3D-ігри чудово підманюють очі. Наприклад, існує техніка під назвою окклюзія навколишнього простору екрану (SSAO), яка дасть більш реалістичне відчуття, затінюючи ті частини сцени, близькі до поверхневих розривів. Якщо ви подивитеся на кути вашої стіни, то побачите, що вони здаються трохи темнішими, ніж центри в більшості випадків.
Такого ж ефекту можна досягти за допомогою радіовипромінювання, яке базується на досить точному моделюванні. Радіостанція також враховуватиме більше ефектів відскакуючих вогнів тощо, але це обчислювально дорого - це техніка відстеження променів.
Це лише один приклад. Існує сотні алгоритмів комп'ютерної графіки в реальному часі, і вони по суті базуються на хороших наближеннях і, як правило, роблять багато припущень. Наприклад, просторове сортування потрібно вибирати дуже ретельно, залежно від швидкості, типового положення камери, а також кількості змін в геометрії сцени.
Ці "оптимізації" величезні - ви можете ефективно реалізувати алгоритм і змусити його працювати в 10 разів швидше, але вибір розумного алгоритму, який дає подібний результат ("обман"), може змусити вас перейти від O (N ^ 4) до O ( журнал (N)).
Оптимізація реальної реалізації - це те, що робить ігри ще ефективнішими, але це лише лінійна оптимізація.
Ееееек!
Я знаю, що це питання давнє, але захоплююче, що ніхто не згадав про VSync !!! ???
Ви порівняли використання процесора гри в 60 кадрів в секунду з використанням процесора демонстрації чайника в 60 кадрів в секунду.
Хіба не очевидно, що обидва працюють (більше або менше) рівно 60 кадрів в секунду? Це призводить до відповіді ...
Обидва додатки працюють із vsync! Це означає (скидається вниз), що кадр візуалізації фіксується на "вертикальному інтервалі порожнього" вашого монітора. Графічне обладнання (та / або драйвер) відображатиметься лише на макс. 60 кадрів в секунду. 60 кадрів в секунду = 60 Гц (Гц = в секунду) частота оновлення. Тому ви, мабуть, використовуєте досить старий, мерехтливий ЕЛТ або звичайний РК-дисплей. На CRT, що працює на частоті 100 Гц, ви, мабуть, побачите частоту кадрів до 100 ГГц. VSync також застосовується аналогічно до РК-дисплеїв (вони зазвичай мають частоту оновлення 60 ГГц).
Отже, демонстрація чайника справді може працювати набагато ефективніше! Якщо він використовує 30% часу процесора (порівняно з 50% часу процесора для GTA IV), то він, ймовірно, використовує менший час процесора для кожного кадру, і просто чекає довше наступного вертикального порожнього інтервалу. Щоб порівняти обидва додатки, слід відключити vsync і виміряти ще раз (ви будете вимірювати набагато більші fps в обох додатках).
Іноді нормально відключити vsync (у більшості ігор є параметр у налаштуваннях). Іноді ви побачите "виривання артефактів", коли vsync відключений.
Докладні відомості про нього та чому він використовується у Вікіпедії: http://en.wikipedia.org/wiki/Vsync
Хоча багато відповідей тут надають відмінні ознаки , як я замість того, щоб відповісти на просте запитання про те, чому
Мабуть, найкращим прикладом (безумовно, одним із найвідоміших) є програмне забезпечення Id. Вони зрозуміли дуже рано, за часів командира Кіна (задовго до 3D), що придумали розумний спосіб досягти чогось 1 , навіть якщо він покладався на сучасне обладнання (в даному випадку графічну карту EGA!), Що графічно перевершує конкуренція, завдяки якій ця гра виділиться. Це було правдою, але далі вони зрозуміли, що замість того, щоб самостійно придумувати нові ігри та контент, вони можуть ліцензувати технологію, отримуючи тим самим дохід від інших, в той час як зможуть розвинути двигуни нового покоління і, таким чином, знову перескочити конкуренцію .
Здібності цих програмістів (разом із кмітливістю до бізнесу) - це те, що зробило їх багатими.
Це говорило, що не обов’язково гроші мотивують таких людей. Можливо, так само бажання досягти, здійснити. Гроші, які вони заробляли в перші дні, просто означають, що тепер вони мають час присвятити тому, що їм подобається. І хоча у багатьох є сторонні інтереси, майже всі все ще програмують і намагаються розробити способи зробити краще, ніж остання ітерація.
Простіше кажучи, у людини, яка написала демонстрацію чайника, ймовірно, було одне чи більше таких питань:
Останнє може звучати суворо 2, але очевидно, що є деякі, які кращі за інших, криві дзвонів іноді мають крайні кінці, і вони, як правило, притягуються до відповідних крайніх кінців того, що робиться з цим вмінням.
Найменш цілі, ймовірно, є основною причиною. Ціль демонстрації чайника був саме цим, демонстрацією. Але не демонстрація вміння програмістів 3 . Це було б демонстрацією однієї невеликої сторони (великої) ОС, в даному випадку DX-рендерінга.
Для тих, хто переглядає демонстраційну версію, це не означає, що вона використовувала набагато більше процесора, ніж потрібно, поки це виглядало досить добре. Не було б стимулу виводити відходи, коли не було б бенефіціара. У порівнянні, гра хотіла б мати запасні цикли для кращого AI, кращого звуку, більше полігонів, більше ефектів.
Через кілька причин
EDIT: Щоб дати кілька цифр
2,8 ГГц Athlon-64 з NV-6800 GPU. Результати:
Іноді сцена може мати більше, ніж здається. Наприклад, обертовий чайник з тисячами вершин, картографічне оточення, нестандартне картографування та інші складні піксельні шейдери, які все одночасно виводяться, становить цілу велику кількість обробки. Багато разів такі демонстрації чайників просто покликані демонструвати якийсь особливий ефект. Вони також не завжди можуть найкраще використовувати GPU, коли ціль не є абсолютною продуктивністю.
У грі ви можете побачити подібні ефекти, але вони, як правило, робляться компромісно, намагаючись досягти максимальної частоти кадрів. Ці оптимізації поширюються на все, що ви бачите в грі. Питання стає таким: "Як ми можемо створити найефектнішу та реалістичнішу сцену з найменшою кількістю обробної потужності?" Саме це робить ігрових програмістів одними з найкращих оптимізаторів навколо.
За всіма кваліфікованими та хорошими відповідями, той, що має значення, все ще відсутній: Лічильник використання процесора Windows не дуже надійний. Я думаю, що цей простий демонстраційний чайник просто викликає функцію візуалізації в режимі очікування, блокуючи при заміні буфера.
Тепер лічильник використання процесора Windows просто дивиться, скільки часу процесора витрачається на кожен процес, а не як використовується цей час процесора. Спробуйте додати
Sleep(0);
одразу після повернення з функції візуалізації та порівняйте.
Крім того, існує багато безлічі хитрощів з художньої точки зору для економії обчислювальної сили. У багатьох іграх, особливо старіших, тіні попередньо розраховуються і «випікаються» прямо в текстури карти. Багато разів художники намагалися використовувати літаки (два трикутники) для зображення речей, як дерева та спецефекти, коли це виглядатиме здебільшого однаково. Туман в іграх - це простий спосіб уникнути надання віддалених об'єктів, і часто в іграх було б кілька роздільних можливостей кожного об'єкта для подання в далекому, середині та поблизу.
Основою будь-якої відповіді має бути таке: Перетворення, які виконують тривимірні двигуни, в основному визначаються додаваннями та множеннями (лінійна алгебра) (без гілок чи стрибків), операції малювання одного кадру часто задаються так, що кратні такі завдання в додатку можуть виконуватися паралельно. Ядра GPU дуже хороші для додавання мул, і вони мають десятки або сотні ядер для додавання мул.
Процесор залишається робити прості речі - наприклад, AI та інші логічні ігри.
Як може така велика гра на ПК, як GTA IV, використовувати 50% мого процесора та працювати зі швидкістю 60 кадрів в секунду, тоді як демонстрація DX обертового Teapot @ 60fps використовує колосальні 30%?
Хоча GTA, швидше за все, буде більш ефективним, ніж демонстрація DX, вимірювання ефективності процесора таким чином істотно порушено. Ефективність може бути визначена, наприклад, за кількістю роботи, яку ви виконуєте за певний час. Простий контрприклад: породжує один потік на логічний процесор і нехай на ньому проходить проста нескінченна петля. Ви отримаєте 100% використання процесора, але це не ефективно, оскільки корисна робота не проводиться.
Це також призводить до відповіді: як гра може бути ефективною? При програмуванні «великих великих ігор» докладаються величезні зусилля для оптимізації гри в усіх аспектах (що в наші дні зазвичай також включає багатоядерні оптимізації). Що стосується демонстрації DX, то його суть полягає не в швидкості, а в демонстрації концепцій.
Я думаю, вам слід поглянути на використання GPU а не процесору ... Я думаю, що графічна карта набагато зайнята в GTA IV, ніж у зразку Teapot (вона повинна бути практично простою).
Можливо, ви могли б використовувати щось на зразок цього монітора, щоб перевірити це:
http://downloads.guru3d.com/Rivatuner-GPU-Monitor-Vista-Sidebar-Gadget-download-2185.html
Також кадр має щось враховувати, можливо, зразок чайника працює на повній швидкості (можливо, 1000 кадрів в секунду), і більшість ігор обмежені частотою оновлення монітора (близько 60 кадрів в секунду).
Подивіться на відповідь на vsync; тому вони працюють з однаковою частотою кадрів.
По-друге, процесор пропускає лідируючі позиції в грі. Спрощене пояснення полягає в тому, що основний цикл гри - це просто нескінченний цикл:
while(1) {
update();
render();
}
Навіть якщо ваша гра (або в цьому випадку чайник) не так багато, ви все ще з'їдаєте процесор у своєму циклі.
50% процесор в GTA "більш продуктивний", ніж 30% в демонстраційній версії, оскільки, швидше за все, він зовсім не робить багато чого; але GTA оновлює багато деталей. Навіть додавання "Sleep (10)" до демонстрації, ймовірно, знизить його CPU на тону.
Нарешті, подивіться на використання GPU. Демонстрація, ймовірно, займає <1% на сучасній відеокарті, тоді як GTA, ймовірно, отримає більшість під час гри.
Словом, ваші орієнтири та вимірювання не є точними.
Демо демонстраційний чайник DX не використовує 30% процесора для корисної роботи. Це зайнято-чекаючи, тому що більше нічого робити.
З того, що мені відомо про серію Unreal, деякі умовності порушуються, як інкапсуляція. Код складається в байт-код або безпосередньо в машинний код залежно від гри. Крім того, об'єкти надаються та упаковуються у вигляді сіток, а речі, такі як текстури, освітлення та тіні, попередньо розраховуються, тоді як, як чиста 3d-анімація, це потрібно в реальному часі. Коли гра фактично працює, є також деякі оптимізації, такі як лише візуалізація лише видимих частин об'єкта та відображення текстурних деталей лише при закритті. Нарешті, ймовірно, що відеоігри створені для того, щоб найкраще вийти з платформи в даний момент (наприклад: Intelx86 MMX / SSE, DirectX, ...).
Я думаю, що тут відсутня важлива частина відповіді. Більшість відповідей говорить про те, що "Знай свої дані". Справа в тому, що ви повинні однаково і з однаковою мірою важливо знати і своє:
Але , крім того, з сучасними сучасними комп’ютерами ви ніколи не зможете відтворити справжнє відео з роздільною здатністю 1080p при >> 30ftp (одне зображення 1080p в 64 бітах зайняло б 15 000 Ko / 14,9 MB). Причиною цього є через вибірку / точність вибірки. Відеоігра ніколи не використовує подвійну точність (64 біт) для пікселів, зображень, даних тощо ..., а скоріше використовувати меншу власну точність (~ 4-8 біт), а іноді і меншу точність, розширену за допомогою методів інтерполяції, щоб забезпечити розумне обчислення час.
Існують і інші методи, такі як відсікання даних (як зі стандартом OpenGL, так і за допомогою програмного забезпечення), стиснення даних тощо. Майте також на увазі, що поточні графічні процесори можуть бути> в 300 разів швидшими за поточні процесори з точки зору можливостей обладнання. Однак хороший програміст може отримати коефіцієнт 10-20x, якщо ваша проблема не буде повністю оптимізована та повністю паралелізована (особливо паралелізація завдання).
З досвіду можу сказати вам, що оптимізація - це як експоненціальна крива. Для досягнення оптимальних показників необхідний час може бути надзвичайно важливим.
Отже, щоб повернутися до чайника, ви повинні побачити, як представлена, вибірена геометрия та з якою точністю Vs бачиться в GTA 5, з точки зору геометрії / текстур та найважливіших, деталей (точності, відбору проб тощо)