Archive for October 2012

Publish @Ivan Gavrenkov: Как работает новое демо Square Enix

Да-да, то самое демо. Новое поколение консолей за углом, поэтому пришло время смотреть too good to be true tech demos. Под катом Ваня Гавренков рассказывает некоторые технические подробности и они, как мне кажется, хорошо показывают, почему итоговая реальность так от них отличается.
Спойлер: обмана нет, там действительно реалтайм.

Continue reading ‘Publish @Ivan Gavrenkov: Как работает новое демо Square Enix’ »

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

Publish: Про спеки iPad

Одна из самых важных повседневных функций Кружочков – практические вопросы. Чат – очень быстрый и интерактивный медиум, прямо чувствуешь доступ к коллективному разуму.

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

Continue reading ‘Publish: Про спеки iPad’ »

Publish @IronPeter: Allocator for “search”