LINUX.ORG.RU

Представители Valve раскрыли подробности оптимизации движка Source под OpenGL

 , , , ,


1

4

На конференции SIGGRAPH компания Valve публично продемонстрировала портированный для Linux игровой движок Source, на примере запуска в Linux игры Left 4 Dead 2. Одновременно была показана презентация, в которой были раскрыты подробности проведённой оптимизации, в результате которой движок Source с компонентом рендеринга через OpenGL, запускаемый в Linux, продемонстрировал более высокие результаты производительности, чем при использовании Direct3D при запуске игры в Windows 7 (315 FPS против 270 FPS). Докладчиком по данному вопросу выступил Рич Гелдрих (Rich Geldreich), автор открытой библиотеки Crunch, ныне работающий в Valve.

Наиболее интересные моменты:

  • В среднем, на видеокарте NVIDIA GeForce GTX 680, при использовании OpenGL движок на 11% быстрее, чем при использовании Direct3D. Предполагается, что можно отыграть еще около 5% путем оптимизации транслятора вызовов Direct3D в OpenGL.
  • Наиболее удивительным фактом является то, что движок работает быстрее, несмотря на то, что рендеринг производится путем транслирования Direct3D вызовов и абстракций в вызовы и абстракции OpenGL. При этом есть дополнительный слой — транслятор, что однако не помешало итоговой конструкции работать быстрее оригинала. Транслятор реализует маппинг Direct3D 9 в OpenGL практически 1 в 1.
  • В случае многопоточных видеодрайверов паразитная нагрузка от транслятора и OpenGL соотносится как 50/50. Однако, если видеодрайвер однопоточный, в вызовах OpenGL может быть потрачено до 80% времени, а в трансляторе лишь 20%. Отмечается, что компания NVIDIA проделала много работы по организации многопоточности в своем драйвере.
  • Valve сотрудничают с компанией Intel (которая недавно как раз представила очередную порцию изменений в драйвере по просьбе Valve), AMD и NVIDIA. Изначально у выполняющей работу по портированию для Linux команды Valve был довольно ограниченный опыт. В основном помогла тактика интенсивного профилирования с анализом где сколько времени тратится на различные вызовы. Целью было учесть каждую микросекунду.
  • Наиболее сложным было собственно профилирование. Во-первых, сам игровой движок многопоточный, что существенно усложняет его профилирование. Во-вторых, большинство средств профилирования не видит нить видеодрайвера, обрабатывающую запросы на рендеринг. В-третьих, у движка Source множество опций и он сильно масштабируем под разные конфигурации.
  • Кроме всего прочего, был использован инструментарий от RAD Game Tools под названием Telemetry.

Некоторые оптимизации:

  • поддержка многопоточности в режиме OpenGL;
  • убрано большинство вызовов glXMakeCurrent;
  • исправлено использование pthreads;
  • сокращен оверхед трансляции D3D->GL путем переписывания самых горячих мест;
  • улучшен dirty range tracking;
  • добавлен отдельный однородный массив для базовых матриц;
  • улучшено обновление динамических буферов и оптимизации настроек компилятора. Наиболее полезными в плане улучшения производительности было использование опции компилятора «-ffast-math» и отключение опции «-fPIC».

Новость взята с opennet.ru

>>> Подробности



Проверено: JB ()
Последнее исправление: JB (всего исправлений: 3)
Ответ на: комментарий от beresk_let

нувобщемда. а на кой он мне? файтинги мне вообще не сдались, а уж соревнования в стиле кто больше пива выпьет (имхо приставочные баталии ровно из той же серии) совсем как-то...

просто первые МК оказывали на неокрепшее детско-юнешеское сознание уау-эффект + фильма. дизайн бойцов врезался в память.

кстати, реально я играл на приставке лет нцать назад в гостях. подавали контру на двоих. денди (ну или супер-) была.

anonymous
()
Ответ на: комментарий от anonymous

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

UNiTE ★★★★★
()
Ответ на: комментарий от Slackware_user

Call of Duty основана на IdTech3 - третьеквака. Под CoD я имел ввиду именно Call of Duty.

ivanlex ★★★★★
()
Ответ на: комментарий от Quasar

Под CoD я имел ввиду Call of Duty. Он основан на модифицированном движке третьекваке. В следующих версиях модификация была более глубокой: рендеринг переписан на DirectX, добавлены динамические тени, скелетная анимация и множество других плющек... Doom3 на движке IdTech4 вышел позже.

Что за игрушка такая Cock of Doody - я не знаю.

ivanlex ★★★★★
()
Ответ на: комментарий от anonymous

Не позорься, почитай как работать с OpenGL'ем c несколькими потоками.

Ну, как бы обычно для таких случаев создают несколько расшаренных контекстов — один выводится на экран, через остальные выполняют загрузку текстур и прочие затратные по времени операции. Но ведь и тут glXMakeCurrent достаточно вызвать по одному разу на контекст, постоянно переключать контексты туда-сюда не надо.

Или мсье рекомендует какой-нибудь другой способ?

anonymous
()
Ответ на: комментарий от anonymous

а всезнающий анонимус случайно не знает как добиться такого эффекта на android ? а то при каждом сворачивании приложения или показе дефолтных попапов теряется opengl контекст и приходится заново загружать все текстуры, а это чревато постоянным ожиданием загрузки

sacred ★★
()
Ответ на: комментарий от tp_for_my_bunghole

Графон несколько сосёт, да и стратегию с тактической РПГ нехорошо сравнивать.

O02eg ★★★★★
()
Ответ на: комментарий от tp_for_my_bunghole

Она есть для PC? Нет. А ваш ответ за аргумент не канает. Да еще валькирия это европейское аниме а то что вы привели я даже затрудняюсь как назвать.

A-234 ★★★★★
()
Последнее исправление: A-234 (всего исправлений: 1)

Что же могу сказать...

УРА!!! вендекапец прийдёт неприменно!

mittorn ★★★★★
()
Ответ на: комментарий от Reset

Ещё и акварелью, да. Будто что-то плохое.

O02eg ★★★★★
()

Новость радует! Блог, заявления разработчиков из Valve, все не спроста, я думаю стим будет под Linux и не с одной игрой. Все что можно было выкачать из windows пользователей забрали, развивать рынок уже некуда, остались только Linux пользователи, и хоть нас и 1-5 % но это тоже миллионы людей, тем более ниша не занята, а платить 5-10 баксов смогут многие! В Valve работают не дураки, все уже подсчитано и плюсов больше, дело только за программистами, запилить все как надо.

papaden
()
Ответ на: комментарий от Reset

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

A-234 ★★★★★
()
Ответ на: комментарий от sacred

Я не всезнающий, не надо льстить. Но есть пара замечаний по твоему сообщению:

  • причём тут Андроид?
  • на Андроиде нет ни иксов, ни, как следствие, функции glXMakeCurrent.
anonymous
()
Ответ на: комментарий от Jaga

Чёрт его знает, смотря какой мод. Во всяком случае smod 32 под вайном шёл нормально.

UNiTE ★★★★★
()
Ответ на: комментарий от anonymous

прост уже замучался искать решение, ведь это не проблема а (!!!) официальное поведение, описываемое в документации. а спросил у тебя так подумал, что возможно ты чтото подскажешь умное

sacred ★★
()
Ответ на: комментарий от sacred

На данный момент весь мой опыт разработки под Android ограничивается сборкой и запуском пары Qt-шных программ (т.ч. это, скорее, тест андроидного порта Qt, чем, собственно, программирование под Андроид). Но гугл говорит, что

  • в Honeycomb и более новых версиях такого уже нет;
  • способов лучше, чем перезагрузка всех ресурсов, нет. Есть хаки, предотвращающие потерю контекста, но это как хождение по минному полю — никогда не знаешь, сработает или нет, а если и сработает, то получиться может [почти] всё, что угодно.

    В любом случае, мой первый пост был вызван искренним непониманием, куда валвовцы понаписали столько вызовов glXMakeCurrent, что это сказалось на производительности.

anonymous
()
Ответ на: комментарий от anonymous

в Honeycomb и более новых версиях такого уже нет;

а можно пруф ? потому как я находил только опцию- попросить не трогать контекст, которая есть с 3ей версии андроида. или мы говорим об одном и том же ?

sacred ★★
()
Ответ на: комментарий от Slackware_user

Возможно, что-то от idtech3 там и осталось, но по большей части это уже собственный движок.

Reset ★★★★★
()
Ответ на: комментарий от Quasar

По-моему ты просто идиот. Проблема с тем, что Quake Live перестал работать сразу, как только зарелизился, возникла ВООБЩЕ У ВСЕХ - на форумах дикий вой был. Так что помалкивай в тряпочку. И, быть может, за умного тогда и сойти сможешь.

4.2
я сам тогда был линукс юзером и играл в ql
ломалось не сразу после релиза, а чуть позже. и очень быстро пофиксили

xtraeft ★★☆☆
()
Ответ на: комментарий от dm1024

бежать ли покумать стремную Восьмерочку с антивирусами или загрузить бесплатный Линакс

или скачать винду звер гейм едишн ультимейт

xtraeft ★★☆☆
()
Ответ на: комментарий от papaden

Все что можно было выкачать из windows пользователей забрали, развивать рынок уже некуда, остались только Linux пользователи, и хоть нас и 1-5 % но это тоже миллионы людей, тем более ниша не занята, а платить 5-10 баксов смогут многие!

facepalm facepalm facepalm

xtraeft ★★☆☆
()
Ответ на: комментарий от farafonoff

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

WatchCat ★★★★★
()
Ответ на: комментарий от xtraeft

или скачать винду звер гейм едишн ультимейт

Ну, речь шла о покупающих (игры, в частности) людях. Хотя и среди качальщиков наверняка многие задумаются.

dm1024 ★★★
()
Ответ на: комментарий от xtraeft

я сам тогда был линукс юзером и играл в ql
ломалось не сразу после релиза, а чуть позже. и очень быстро пофиксили

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

dm1024 ★★★
()
Ответ на: комментарий от anonymous

Что я вот ПРЯМО СЕЙЧАС могу купить из игр этой супермегакорпорации, что сравнилось бы по качеству с топовыми виндовыми играми?

Portal 2 и CS Go.

jackill ★★★★★
()
Ответ на: комментарий от WatchCat

заработал? он фигачит ее несколько лет. Если бы он нанялся 1с программистом - тоже заработал бы миллионы за это время.

farafonoff ★★
()
Ответ на: комментарий от dm1024

Останется только заменить линуксом винду в корпоративном секторе. Упс...

farafonoff ★★
()
Ответ на: комментарий от dm1024

и играть можно было только после ковыряния у него внутре по инструкциям на форуме

да все ок было. по крайней мере в убунте

xtraeft ★★☆☆
()
Ответ на: комментарий от jackill

где я могу купить линукс версии этих игр и скачать прямо сейчас?

xtraeft ★★☆☆
()
Ответ на: комментарий от sacred

в Honeycomb и более новых версиях такого уже нет;

а можно пруф ? потому как я находил только опцию- попросить не трогать контекст, которая есть с 3ей версии андроида. или мы говорим об одном и том же ?

Ну да, про опцию я и говорил.

anonymous
()
Ответ на: комментарий от ist76

Выдерни из него текстуры, слепи карту такой же степени детализации в radiant-е, компильни q3map2 и открой в darkplace.

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

Klogg
()
Ответ на: комментарий от ist76

«играл» это громко сказано. скорее, «смотрел мыльное кинцо»

anonymous
()
Ответ на: комментарий от ekzotech

люблю красивую графику.

вам в Another World, благодарить не надо.

anonymous
()
Ответ на: комментарий от anonymous

Valve Complete Pack стоит 1500 рублей. Там 24 игры. Это по 62 рубля за игру.

Bupyc ★★
()
Ответ на: комментарий от Slackware_user

Call of Duty использует 2 движка:

  • Treyarch NGL - (2ая и 3я части). Основан на IdTech3 (Quake3).
  • IW engine - CoD4:MW (IW 3.0 Engine), CoD:WaW (IW 3.0 Engine), CoD:MW2 (IW 4.0 Engine), CoD:BlackOps (IW 3.0 Engine), CoD:MW3 (IW 5.0 Engine или MW Engine), CoD:BlackOps 2 (IW 3.0 Engine). IW Engine основан на IdTech3 (Quake3).

IW Engine только основан на IdTech3, но большая часть движка была переписана. Что там осталось от оригинала после стольких лет самостоятельной разработки - неизвестно. Очень даже может быть, что ничего. Я слежу за выпусками данной серии, как и за выпусками их главного конкурента Battlefield. Заявлений, что они вдруг стали использовать IdTech4 я не видел (или пропустил?), да и смыл им платить за данную технологию, если они ранее купили движок IdTech3 со всеми потрохами, а все необходимые плюшки реализовали сами?! И надо сказать, что реализовали они свои плюшки не хуже конкурентов, а первоначальный движок от Quake3 они использовали как трамплин, основа для создания своего собственного современного движка.

ivanlex ★★★★★
()
Ответ на: комментарий от Slackware_user

Форумам меньше верь, а верь официальным заявлениям. Там на форуме так же кто то брякнул: «а не использует ли?», а другой подхватил: «точно-точно!». Форумы фанатов, это последнее место, где можно искать официальную информацию.

ivanlex ★★★★★
()
Ответ на: комментарий от xtraeft

Весьма возможно, что не поможет. Гейб не просто так поднял вопль. Приложения на Win8 будут иметь возможность проверять, санкционирован их запуск на данном ПК или нет (при включенном Secure Boot) на основе сертификатов. Отключишь Secure Boot, поставишь ЗверьВин8 - а пойдут ли игрушки работать?!

Вот Гейб и взвыл. Получается, что игры смогут проверять пиратские они или нет, но для этого им нужно распространяться через магазин мелкомягких. А мелкомягкие берут комиссию за распространение. А кто из игроделов захочет платить комиссию сразу двум распространителям? Вот и получается, что Гейб со Стимом в пролете.

Кажется так... (перекрестился) Мелкософт сам себе яму роет... Верю в успех Valve.

ivanlex ★★★★★
()
Ответ на: комментарий от farafonoff

он фигачит ее несколько лет.

Она ещё в статусе альфы начала приносить ему деньги.

Если бы он нанялся 1с программистом - тоже заработал бы миллионы за это время.

Нука нука, это где программисты 1C получают под три ляма евро в месяц?

WatchCat ★★★★★
()
Ответ на: комментарий от loz

Чего? Вон под маокм уже 100% рабочий OpenGL-рендерер работает. Вы не поняли? Direct3D транслируется в OpenGL НА ВИНДЕ, для сравнения, не на линуксе

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.