Archive for August 2007

ЕЗЫГ МОЙ. «ПЕРДИСЛОВИЕ»

Всему, кажется, своё время. Рано или поздно кризис жанра приводит к очевидному пониманию – так жить нельзя. После чего немедленно хочется откинуть гряные сандали С++ в сторону цели, написать что-нибудь своё – большое, чистое, прекрасное.

Continue reading ‘ЕЗЫГ МОЙ. «ПЕРДИСЛОВИЕ»’ »

Коллективный разум: How to

Я нашел в MS дядьку, с которого дико тащусь.

Его зовут Дэвид Блайс (David Blythe), и он архитект в Windows в области графики. Дядька раньше дизайнил OGL в SGI, писал по нему книжку, а сейчас вот архитектит в том числе D3D. Дядька совершенно монструозный и замечательный. Я с ним говорил минут 20 и просветлился больше, чем за два предыдущих месяца. Читал его гуидлайны про API design и опять же радовался.

Отрывок на сегодня:

“DESIGN BY COMMITTEE. Avoid design by committee. There should be a single person with final say in the design …. and this person should have good architectural experience and instincts.”

Я еще не умею писать так лаконично, поэтому придется в многабукф.

Continue reading ‘Коллективный разум: How to’ »

Про инерцию мышления

Как белый человек делает минимально продолжительный рефактор в эпоху победивших DVCS?

Он, натурально, регулярно фиксирует промежуточные локальные изменения, в которых что-то уже заработало, в локальном же репозитории. А по окончанию рефактора и тестов делает либо push, либо commit в глобальный репозиторий. (Последнее в случае, если глобальный построен на нераспределенной VCS.)

Только вот через неделю затяжного рефактора я все равно поймал сам себя на том, что с целью бэкапа сделал уже 4ю копию промежуточных исходников тупо кнопочкой F5, а не командой hg commit.

Буду делать вид, что это я как будто забранчил. Потому как бранчи в том hg делаются, хихи, тоже кнопочкой F5!

Эволюция геймобжекта

Намедни меня попросили в продолжение темы эволюции рассказать про эволюцию игрового объекта (GameObject). Отвечаю: тут эволюции нету. Тут самое что ни на есть распределенное блуждание по дюжине разных направлений.

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

Но мое глубокое ИМХО – лучший gameobject – это отсутствие gameobject вообще. В игре не так много сущностей, которые обладают полностью единым интерфейсом. И слишком много сущностей, которые обладают совсем разным интерфейсом.

Последний раз про математику или ещё раз про abstraction penalty

Мы дружим с дизассемблером не только и не столько потому, что мы не любим компилятор. Работа компилятора это работа сантехника – продираться через clutter. Clutter – это не только синтаксический сахар, но и неявно выраженные невнятные неочевидные идеи; пишем Партия подразумеваем Ленин.

Continue reading ‘Последний раз про математику или ещё раз про abstraction penalty’ »

Расчет глубины пикселя

В процессе оптимизации демки для PS3 выяснилось, что было бы неплохо оптимизировать шейдер для частиц. В вершинном шейдере происходит расчет позиций 4 вершин (частицы – билборд), а-ля point sprite, но размер указывается в world space, и частицы можно крутить. В пиксельном шейдере считается глубина, читается глубина из depth texture, и разница с коэффициентом используется как множитель к альфе.

Continue reading ‘Расчет глубины пикселя’ »

Цена абстракции-2 (или все, что мама не рассказывала про C++)

Иногда за абстракцию приходится платить временем исполнения. А иногда – временем отладки!

Вопрос в копилку для собеседования на позицию C++ гуру: влияет ли шаблонность метода на видимость переменных?

Правильный ответ с точки зрения MSVC 2005…

Continue reading ‘Цена абстракции-2 (или все, что мама не рассказывала про C++)’ »

PS3 hands-on experience


кликабельно

crossposted to zeux.livejournal.com.

Как прекрасно, когда новый runtime – lean & mean. Нагромождения стейтов превратились в удобные и быстрые state objects, дорогие по разным причинам установки шейдерных констант завернули в constant buffers. Потерь устройства нет, вся память – полностью виртуализирована. Depth-текстуры – поддерживаются официально. Если текстура скажем формата A8R8G8B8, то каждый компонент можно рассматривать как unsigned int, как fixed point, как signed int, etc. Ну и конечно – отлично, когда наконец-то есть возможность генерировать геометрию прямо на GPU! Не говоря уже о легализации хака R2VB.

Continue reading ‘PS3 hands-on experience’ »

магия, чёрная и белая

Prefetch есть. Он не может не есть.

Continue reading ‘магия, чёрная и белая’ »

Цена абстракции (или все, что мама не рассказывала про C++)

Оно понятно, что на компилятор надейся, а сам не плошай. Однако 2007-й год за окном провоцирует многих думать, что современный компилятор от ведущей-компании разработчика ПО (это MSVC 2005) достаточно умен, чтобы хорошо компилировать несложный код.

Увы, это заблуждение.

Continue reading ‘Цена абстракции (или все, что мама не рассказывала про C++)’ »