Archive for the ‘Uncategorized’ Category.

Разноцветные мип-мапы

Как известно, художники любят большие детализированные текстуры. Такие, что в игре видны только их мипмапы ненулевого уровня. Например, текстура 512×512 на наконечнике копья.
Борис Баткин рассказывал про интересный трюк, как быстро находить такие текстуры в игре: надо в загрузчике текстур заменить мипмапы на отладочные. У которых нулевой мип-уровень залит зелёным цветом, 1-й синим, 2-й – жёлтым, 3й – оранжевым, 4й и дальше – красным. Таким образом, если камера вблизи объекта и он не зелёный – это повод бить тревогу.
Continue reading ‘Разноцветные мип-мапы’ »

ключевые слова: software patents, java, oracle, google, android

всё очень и очень неинтересно

/me ОРЁТ: гадкий кризис это очень и очень хорошо. чем хуже, тем лучше. чем гаже, тем быстрее сдохнут софтверные патенты. повсеместно.

Многопоточность (поток сознания)

Модная несколько лет назад тема “а давайте разместим игровой цикл в двух потоках – графика отдельно, физика отдельно” постепенно сходит на нет. И слава богу. По целому ряду причин. Во-первых, двухпроцессорными машинами уже никого не удивить, скоро никто не будет удивляться процессорам, в которых количество ядер будет измеряться двузначными числами. А во-вторых (и это более важно), ручное распределение задач по ядрам имеет определенную степень осмысленности только для простых задач, где такое распределение действительно может принести определенный перформанс. Но чем сложнее становится код, тем сложнее: а) держать в голове все выполняемые приложением задачи, б) иметь действительно эффективную реализацию многопоточности, в которой треды будут выполнять вычисления, а не ожидать друг друга.

При дальнейшем усложнении приложения можно получить и совсем дурацкую ситуацию – вручную распараллеленное приложение будет работать медленнее, чем точно такое же, но выполняемое в один поток. Ситуация сродни программированию на асемблере – известно, что ручной ассемблерной реализацией на синтетическом примере можно “выжать” еще 10-15% производительности из кода против С. Но если писать большую программу на ассемблере, то это займет гигантское количество времени и ресурсов, а результат вряд ли будет производительнее, чем высокоуровневая программа.
То же самое происходит и здесь. Ручное распараллеливание синтетического примера действительно может дать хороший прирост производительности. Ручное распараллеливание крупной программы почти наверняка потребует гигантских усилий и может принести замедление вместо ожидаемого ускорения.

Continue reading ‘Многопоточность (поток сознания)’ »

маленькая, но не менее умная задача

есть какое-то вещественное C
надо найти такие целые A в [A_min..A_max], B в [B_min..B_max] так
чтобы A / B было максимально близко к C ( скажем c = A/B, надо Min (c-C)^2 )

Большая, умная задача

C#, гвозди

Кратко – type inference my ass.
Continue reading ‘C#, гвозди’ »

onliner

ironpeter ‘at’ yandex-team

dual-pivot quicksort

Все истинно гениальное очень просто.

http://iaroslavski.narod.ru/quicksort/DualPivotQuicksort.pdf

http://permalink.gmane.org/gmane.comp.java.openjdk.core-libs.devel/2628

Не прошло и 50 лет.

шейдер интерполятора

по мотивам того самого текстурного шейдера

сосбвтенно в заголовке всё сказано
use-case-ы у нас нормали, всевозможные кватернионы, базис для tangent space и прочие мелкие радости
кстати тот самый базис наглядно показывает необходимость в нескольких outputs
ну и, как всегда, на каждый пиксель интерполяторов приходится как минимум много
бонусы как и в прошлый раз. железо то-же

Gamedeff party – и место определилось

В субботу, 8-го августа, мы собираемся в заведении Шварцвальд (адрес) в 19:00 по Москве. Заказано с совсем небольшим запасом, поэтому много случайных людей приводить не надо, и так, на удивление, кворум приличный.

Как всегда, огромное спасибо за помощь в организации. Вылетаю поутру, все уже вот-вот!
Контактное лицо – я или дядя Дима.

Новосибирску – готовиться с понедельника.