Archive for the ‘Zeux’ Category.

Главное событие GDC

В последние несколько лет застой в развитии графических API на PC/Mac в общем-то уже стал статусом кво. Наш ROBLOX, скажем, работает на DX9 и в ус не дует (у нас там 15-20% XP все еще, например). Кроме отдельных AAA-игр, которых можно пересчитать по пальцам, у всех остальных все либо также, либо вообще нет десктопа как платформы.

Я часто рассказываю, что пришел в Windows Graphics в замечательный момент – Windows в целом перестал беспокоиться про трехмерную графику и геймдевелоперов. Не все в мире получили memo, но вот DirectX SDK снова вышел не раз в три месяца, а раз в три года, и многие стали что-то подозревать!

И вот ситуация разворачивается, так что похоже и ушел я из MS тоже в замечательный момент – DX12 решает вполне актуальные проблемы. Не знаю, как там у мужиков мысленный процесс работает, но кажется, что это реакция прежде всего на независимые инициативы AMD и в некотором смысле NVidia в мире PC, а не на конкуренцию со стороны Мака и мобильного мира.
Хотя казалось бы, беспокоиться-то надо про второе.

Итак, будет DX12 и он очень напоминает AMD Mantle. OpenGL тоже не стоит на месте, но пытается решить те же проблемы совсем другим способом.

А теперь подробнее.
Начинать читать лучше с замечательного рассказа Zeux про проблемы текущего состояния вещей:

http://public.closedcircles.com/posts/gdc-2014-mantle-directx12-and-dip-cost

В частности, потому что он не только о будущих графических API, а о том, почему все так плохо в текущем положении вещей. История графических API на PC/Mac – это история наслаивающихся абстракций, яростной эволюции железа под этими абстракциями, legacy, длящейся 10 лет итд итп. Про какую-то ее часть этой истории я писал тут и тут.
И вот стоимости этих абстракций постепенно накапливалась и накапливалась эти 10 лет, причем все это время все участники экосистемы в меру сил старались этому противостоять – и оптимизировали игры, и драйвера, и прослойку в операционной системе.
Тем не менее, имеем что имеем – ситуация очень показательная.

Далее есть отдельные детали про DX12 и OpenGL:
http://public.closedcircles.com/posts/gdc-2014-directx12
http://public.closedcircles.com/posts/gdc-2014-optimizing-driver-overhead-in-opengl

В общем, это все здорово, позитивно и должно было блин случиться 5 лет назад. Ох, как бы опять не получилось too little too late у родной компании.

Publish @Zeux: GDC report – DirectX 11 Performance Reloaded – Nick Thibieroz (AMD) and Holger Grun (NVIDIA)

Меж тем, прошло ежегодное мероприятие Game Developer Conference. Как обычно, можно посетовать, что про графику и суровый тек докладов все меньше, а про универсальные платформы для всех телефонов – все больше, но жизнь движется куда движется. Где, кстати, о GDC в рунете пишут еще?
Как и любая конференция, GDC не столько про доклады, сколько про возможность встретиться и пообщаться – вот например @wat выбрался в кои-то веки. Был очень рад всех увидеть, отлично посидели, надо чаще!
На Кружочках постепенно зарождается традиция транслировать интересные доклады в реалтайме, что по мне отлично дополняет просмотр слайдов, а иногда их и успешно заменяет. Можно у докладчиков спрашивать точнения на вопросы, возникшие по у других ходу итд. Будем их потихоньку выкладывать.
@Zeux ходил на много интересного по графике – спасибо и респекты за трансляции!

Алсо, прикрутил по случаю на http://blog.gamedeff.com Disqus comments, комментировать должно стать гораздо проще.
Continue reading ‘Publish @Zeux: GDC report – DirectX 11 Performance Reloaded – Nick Thibieroz (AMD) and Holger Grun (NVIDIA)’ »

@Zeux: GDC Report – D3D11 Deferred Contexts: Primer & Best Practices – Bryan Dudash (NVIDIA)

Кажется, наконец последняя трансляция @Zeux‘a с GDC. Там еще несколько моих, и все, завершим программу.
Эта тоже из разряда репортажей башни из слоновой кости – хай-тек, D3D11, многолетняя война за запуск рендера в нескольких тредах. Я, кстати, еще в бытность свою в Microsoft получал сводки с полей – и тогда драйвер распараллеливался плохо, и сейчас (Брайан, привет!). Что же у них там такое страшное внутри…

Вот кстати, show of hands – кто-то из читающих пишет для D3D11? У нас, подозреваю, только когда/если припрет Metro App делать. Причем все больше похоже на “если”, а не на “когда”.
Continue reading ‘@Zeux: GDC Report – D3D11 Deferred Contexts: Primer & Best Practices – Bryan Dudash (NVIDIA)’ »

@Zeux: GDC Report – The Rendering Technologies of Crysis 3 – Tiago Sousa (Crytek)

Слайды к докладу здесь – http://crytek.com/cryengine/presentations/the-rendering-technologies-of-crysis-3

People in this conversation:
Arseny Kapoulkine (Zeux) Add
CREAT Studios, Saber3D, Sperasoft (EA Sports – FIFA). Currently making kids happy at ROBLOX. http://zeuxcg.org/

Zeux: The Rendering Technologies of Crysis 3 – Tiago Sousa (Crytek)
В целом у меня создалось впечатление что Тиаго весь этот рендер уже давно задолбал, ну или рассказывать про него по крайней мере :)
Значит, основные изменения в рендере Крайзис 3! (для тех, кто знает что-нибудь про Крайзис 2)
Continue reading ‘@Zeux: GDC Report – The Rendering Technologies of Crysis 3 – Tiago Sousa (Crytek)’ »

Publish @Zeux: GDC Report – A Survivor Reborn: Tomb Raider on DX11 – Jason Lacroix (Crystal Dynamics)

Итак, скандалы, интриги, расследования и как оно на самом деле – @Zeux транслировал с доклада про волосы Лары Крофт.

Continue reading ‘Publish @Zeux: GDC Report – A Survivor Reborn: Tomb Raider on DX11 – Jason Lacroix (Crystal Dynamics)’ »

Publish @Zeux: GDC Report – DirectCompute for Gaming: Supercharge your engine with Compute Shaders – Stephan Hodes and Layla Mah (AMD)

Задерживаюсь с постами про GDC, надо постить чаще. Буду догоняться!
Continue reading ‘Publish @Zeux: GDC Report – DirectCompute for Gaming: Supercharge your engine with Compute Shaders – Stephan Hodes and Layla Mah (AMD)’ »

Publish @Zeux: GDC report – Particle Shadows and Cache-Efficient Post-Processing – Louis Bavoil (NVIDIA)

Продолжаем публиковать записи с GDC. Доклады на GDC бывают нескольких разных типов, эти вот – разряда “вендоры железа и держатели платформ рассказывают разработчикам про практики”. Вендорам железа хочется, что разработчики делали хайтек и больше использовали новых фич и новых мощностей, они про это и рассказывают.

Continue reading ‘Publish @Zeux: GDC report – Particle Shadows and Cache-Efficient Post-Processing – Louis Bavoil (NVIDIA)’ »

Publish @Zeux: Еще раз о выстрелах в ногу и STL

Вообще говоря, это вечная тема – сколько надо знать о деталях реализации, насколько можно полагаться на библиотеки итд итп. Тут история уже второго уровня – есть благие намерения и известно, что требуются дополнительные приседания в виде преаллокации массива, но пуля прилетает туда же, куда и обычно.

Там необходимо ненулевое количество букаф чтобы описать ситуацию, ценителям рекомендуется не скроллить сразу до TL;DR.
Очевидные выводы, разумеется – никому не верить, кроме профайлера, и не бояться лезть в кишки чужого кода, каким “стандартным” бы он ни был. Пишите о неочевидных!

Continue reading ‘Publish @Zeux: Еще раз о выстрелах в ногу и STL’ »

Publish @kas, @Joker, @Denis Sladkov, @Zeux: xxAA & stuff

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

Continue reading ‘Publish @kas, @Joker, @Denis Sladkov, @Zeux: xxAA & stuff’ »

Publish @Zeux: Кто рендеры писал…

People in this conversation:
Simon Kozlov Add
Zeux Add

Zeux: @All
Работать с OGRE сплошное удовольствие, столько фана! Вот тут странный баг на ipad – есть код который делает texture compositing для персонажей, запекая все в одну текстуру в рантайме. И вот достаточно редко (типа 1 из 10 запусков) на одном из персонажей текстурка серая (ее clear color – серый, т.е. ощущение, что ничего не рисуется). После определенного количества дебага выяснилось, что при загрузке текстур не степени двойки через Ogre в OpenGL ES делается glClear текущим цветом (соответственно, есть timing condition – если пока FBO composit текстуры еще активен решить что нам срочно нужно загрузить текстуру определенных размеров, то проявляется баг). И вот почему! (ценители OpenGL оценят)

Есть код, который блитает из текстуры в текстуру методом “временно привязать target текстуру к FBO и нарисовать квад с первой текстурой”. Он зачем-то дергается при загрузке текстуры с несовпадающими размерами (типа хотели 143×127, а пришлось 256×128). Вот код из desktop opengl:

void GLTextureBuffer::blitFromTexture(GLTextureBuffer *src, const Image::Box &srcBox, const Image::Box &dstBox)
{
/// Store reference to FBO manager
GLFBOManager *fboMan = static_cast<GLFBOManager *>(GLRTTManager::getSingletonPtr());

/// Save and clear GL state for rendering
glPushAttrib(GL_COLOR_BUFFER_BIT | GL_CURRENT_BIT | GL_DEPTH_BUFFER_BIT | GL_ENABLE_BIT |
GL_FOG_BIT | GL_LIGHTING_BIT | GL_POLYGON_BIT | GL_SCISSOR_BIT | GL_STENCIL_BUFFER_BIT |
GL_TEXTURE_BIT | GL_VIEWPORT_BIT);

Вот эквивалент на OpenGL ES:

void GLESTextureBuffer::blitFromTexture(GLESTextureBuffer *src, const Image::Box &srcBox, const Image::Box &dstBox)
{
// Store reference to FBO manager
GLESFBOManager *fboMan = static_cast<GLESFBOManager *>(GLESRTTManager::getSingletonPtr());

// Save and clear GL state for rendering
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);

Simon Kozlov: reply @Zeux
То есть, пацаны когда портировали не знали чем заменить glPushAttrib и нашли glClear?
Потому что мол некоторые флаги туда пролазят и в комментариях что-то про clear говорится?

Zeux: reply @Simon Kozlov
Ну да. Save не получилось так хоть clear сделаем!

This happened on #gamedeff