LINUX.ORG.RU

Valve представила Left4Dead2 для Linux: детали

 


0

4

Дисклеймер: да, я буду кросспостить в толксы интересные новости от valve, потому что приход valve в мир GNU изменит его, возможно до неузнаваемости. Кнопка «Игнорировать тег» всегда доступна.

Итак, стали известны некоторые детали:

  • Презентация была создана Rich G., работником Valve и называлась «Left 4 Dead 2 в Linux: от 5 до 300 FPS в OpenGL»
  • На NVIDIA GTX 680 OpenGL-рендер производительнее Direct3D на 11%, несмотря на то, что OpenGL-рендер - это обертка над D3D9.
  • Путем оптимизации рендера они надеются увеличить производительность еще на 5%
  • Эта обертка не похожа на ту, что используется в Wine: она работает в реальном времени (non-deferring). Source предоставляет d3d9-подобное api, которое динамически преобразуется в вызовы OpenGL. Поддерживается Shader Model 2.0, вскоре будет поддержка и 3.0
  • Данный уровень абстракции называют идеальным: nearly 1:1 mapping between d3d and gl concepts.
  • На однопоточных драйверах обертка дает примерно 20% оверхеда, но NVIDIA в последнее время сильно улучшила драйвера в части многопоточными. И опять же, OpenGL быстрее
  • Valve работала (и работает) с AMD, Intel и NVIDIA, улучшая и оптимизируя графические драйвера.
  • Использовался Telemetry от RAD Game Tools, а также их собственный профайлер для OpenGL-рендерера.

    Более детально они расскажут обо всем в блоге, о чем я также напишу под тегом 'valve'

    via http://www.phoronix.com/scan.php?page=news_item&px=MTE1NzE

★★★★

несмотря на то, что OpenGL-рендер - это обертка над D3D9.

Опять костыли? WIne уже есть.

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

тред до конца не читай @ сразу отвечай.

Алсо, в Source 2 будет полностью нативный OpenGL (хотелось бы верить, что там не будет DirectX)

pashazz ★★★★ ()

но вообще конечно пусть пиаряцца - все в дом и хорошо, только альт-таб бы еще пофиксили

bender ★★★★★ ()

несмотря на то, что OpenGL-рендер - это обертка над D3D9

наоборот же, D3D9 реализован как обёртка над аппаратным OpenGL.

static_lab ★★★★★ ()

я правильно понял, что OpenGL-рендер - это обертка над оберткой, преобразующей D3D9 вызовы в нативные вызовы OpenGL???

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

я правильно понял, что OpenGL-рендер - это обертка над оберткой, преобразующей D3D9 вызовы в нативные вызовы OpenGL???

Так и есть

static_lab ★★★★★ ()

Поправьте:

OpenGL-рендер - это обертка над D3D9.

Читаем по ссылке:

the way the Source Engine is hitting on OpenGL right now is through a non-deferring, locally-optimizing abstraction layer to basically convert their longstanding Direct3D calls into OpenGL.

Сейчас Source Engine работает с OpenGL через безотлагательный, локально оптимизирующий уровень абстракции, который транслирует его традиционные вызовы Direct3D в OpenGL.

То есть по факту, вызовы Direct3D это обертка над нативным OpenGL.

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

Так и есть

И в каком именно месте оно «Так и есть»?

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

OpenGL-рендер - это обертка над оберткой, преобразующей D3D9 вызовы в нативные вызовы OpenGL

То есть по факту, вызовы Direct3D это обертка над нативным OpenGL.

Только по-разному сформулировано, не?

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

Только по-разному сформулировано, не?

Не.

OpenGL-рендер - это обертка над оберткой, преобразующей D3D9 вызовы в нативные вызовы OpenGL

OpenGL->D3D->OpenGL

То есть по факту, вызовы Direct3D это обертка над нативным OpenGL.

D3D ->OpenGL

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

наоборот же, D3D9 реализован как обёртка над аппаратным OpenGL

Лолшто?

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

наоборот же, D3D9 реализован как обёртка над аппаратным OpenGL

Лолшто?

Source -> D3D -> OpenGL, не?

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

Они как понимаю сделали только ту «часть вайна», которая им нужна, ни больше ни меньше. Для всеобъемлющей оптимизации (учитывая отсутствие необходимости вообще всё переписывать на openGL) полагаю это самое адекватное решение, тем более что оно работает и делает это очень хорошо.

alltiptop ★★★★★ ()

> На NVIDIA GTX 680 OpenGL-рендер производительнее Direct3D на 11%, несмотря на то, что OpenGL-рендер - это обертка над D3D9.

У меня многие игры быстрее в Wine, чем в Windows. Возможно, из-за неработающих эффектов, которым я не придал значения.

ZenitharChampion ★★★★★ ()

На NVIDIA GTX 680 OpenGL-рендер производительнее Direct3D на 11%, несмотря на то, что OpenGL-рендер - это обертка над D3D9.

Это как это? Откуда D3D9 в линухе?

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

Возможно, из-за неработающих эффектов, которым я не придал значения.

именно

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

оттуда же, откуда и в вайне. Вызовы d3d9 конвертируются в OpenGL динамически.

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

и да, valve говорит, что под opengl графон тот же, а работает быстрее.

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

еще бы, у них движки допотопные в которых особого графона и нет

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

Это скорее всего так же, как в Unreal Engine с шейдерами.
Чтобы не писать их по два раза (HLSL+GLSL или HLSL+CG) у них сделан транслятор который собирает мета-шейдеры под платформу.

Я конечно не видел маковский рендер в source, но пологаю, что там просто дополнительный уровень абстракции добавлен.
Отличие от wine в том, что Valve сами точно знают какие штуки им необходимо реализовывать, а потому проблем там никаких.

Динамически это как?

Ответ: почти как в вайне, только с точным пониманием как оно должно работать.
Шейдеры скорее всего тоже как то обрабатывают по хитрому.

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

Графон это прежде всего арт, а не движок. :)
Crysis 1/2 (11 d3d добавили только после релиза), Ведьмак, они все на том же допотопном D3D9.

Ну а плюс игр Valve как раз в том, что они отлично работают даже на i3, можно на ноуте в TF2 погонять, не под линуксами конечно.

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

Шейдеры это разговор отдельный. Меня интересует API. Для реализации вызовов одного API через другой API никакая динамика не нужна и я не понимаю где ей тут место.

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

Crysis 1/2 (11 d3d добавили только после релиза), Ведьмак, они все на том же допотопном D3D9.

Они уже есть под линух? Если нет, то о чем речь?

Ну а плюс игр Valve как раз в том, что они отлично работают даже на i3, можно на ноуте в TF2 погонять, не под линуксами конечно.

Ага, за счет доисторической графики.

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

Yes, the way the Source Engine is hitting on OpenGL right now is through a non-deferring, locally-optimizing abstraction layer to basically convert their longstanding Direct3D calls into OpenGL. However, it's not the same way that Wine does Direct3D to OpenGL conversion. The Source Engine targets a D3D9-like API with extensions that translates GL calls dynamically. This also works for Shader Model 2.0b with Shader Model 3.0 support coming soon. Valve's implementation is nearly a 1:1 mapping between D3D and GL concepts.

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

Просто большинство игр портированных на Mac OS X так же портированы не переписыванием рендера с ноля.
Обычно «ушки» от d3d в том или ином виде остаются.

winddos ★★★ ()

Тред не читал.

Интересно, возможно ли будет применить эту обёртку для портирования других игр, использующих d3d9?

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

Они уже есть под линух? Если нет, то о чем речь?

Речь о том, что движок вообще никак не влияет на «графон».
Т.е технологии конечно добавляют реализма, но как правило все решает арт.
Ну а игры на Source на линуксе тоже пока никто не показал, потому и говорить не очем.

Ага, за счет доисторической графики.

В Portal 2 графика не хуже, чем в 97% консольщины.
Ну а Crysis не становится мега хорошей игрой от того, что там через год после релиза прикрутили нормальную тесселяцию.

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

Вряд ли у них там магическая обертка.
Скорее всего она завязана на архитектуру их движка, и реализует только те куски d3d которые они используют.
А куски «обертки» у Icculus*а в репах лежат.

Просто движок у Valve на все игры один (хотя релизные игры висят на стабильных ветках).
После обкатки на L4D2 можно будет без труда портировать все остальное.
Из кода игр напрямую D3D там не дергается.

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

Привязана к движку, стало быть. Но ведь игры на Source есть не только у Valve…

beresk_let ★★★★ ()

приход valve в мир GNU

ололо

мне не понятно, почему изначально нельзя было накостылять рендерер на огл?

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

D3D работает сам по себе, OpenGL ему не нужен.

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

Потому что под вендой D3D реализован на порядок лучше, чем OpenGL, во всяком случае так многие говорят.

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

так многие говорят

на заборе тоже написано, а хотелось бы увидеть циферки.

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

D3D работает сам по себе, OpenGL ему не нужен

Да, но нативный D3D есть только в винде, поэтому вентили использовали реализацию функций D3D при помощи OpenGL, т.е. сделали обёртку.

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

Ты немного запутался. Source полностью завязан на D3D, на венде он его напрямую использует, на линуксе каждый вызов транслируется в вызов OpenGL. Никаких схем из трех элементов там нет.

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

Ну например Firefox и Chrome под вендой реализовали WebGL через D3D. То есть использовали транслятор как в случае Valve, только ровно наоборот, из OpenGL в D3D.

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

Вообще, погугли про паттерн «Адаптер», это именно он и есть.

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

мне не понятно, почему изначально нельзя было накостылять рендерер на огл?

В Source Engine 2 и напишут.

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

Source полностью завязан на D3D, на венде он его напрямую использует, на линуксе каждый вызов транслируется в вызов OpenGL.

Это и называется обёрткой (wrapper).

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

Пардон, сейчас перечитал, перепутал сообщения. Под «схемой из трех элементов» подразумевалась эта

h31 ★★★★ ()
Последнее исправление: h31 (всего исправлений: 1)
Ответ на: комментарий от h31

winddos к тебе тот же вопрос:

Source полностью завязан на D3D

я не в теме - как он завязан полностью на d3d, если поддержка консолей в нем уже сделана?

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

как он завязан полностью на d3d, если поддержка консолей в нем уже сделана?

Докажем от противного. Пусть Source не завязан на d3d и консоли в нем поддерживаются на 100% нативно, без всяких wrapper'ов. Тогда почему для линукса решили использовать враппер? Разве что причиной может быть недостаток людских ресурсов, но у Valve уже есть команда разработчиков, занятых исключительно линуксом. Получаем противоречие.

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

они столько костыляют Source Engine что №2 призрачен как HL3

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

я не в теме - как он завязан полностью на d3d, если поддержка консолей в нем уже сделана?

Да никак оно не может быть именно «завязано», т.к под libgcm нужен вообще другой рендер.
Просто исходники последнего source я не видел (видел только версию 2010), и потому судить об opengl вообще не могу.

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