четверг, 18 декабря 2008 г.

VGUI Localization Tool

Написал утилиту позволяющая упростить перевод Valve файлов локализации, наподобие *_english.txt, *_russian.txt... С помощью неё можно быстро найти не переведенные места или где изменился оригинальный английский текст.

Хотел опробовать LINQ, поэтому решил в проекте использовать его. Поэтому для запуска требуется .Net Framework 3.5

Скачать и посмотреть исходники можно тут

воскресенье, 2 ноября 2008 г.

Разблокировка Microsoft PIX для игр

Обновил утилиту, теперь она помимо PerfHUD не дает заблокировать использование с игрой и PIX (например для TF2). Скачать можно тут.

Инструкция к использованию такая:
1. Распаковываем архив
2. Запускаем DllInjector
3. Нажимаем InjectDll и выбираем ForcePerfHUDOn

Update: исправил проблемы на некотрых системах

Перехват D3D9 или как устроены StateBlock'и

Когда мы решили полностью отказаться от вызова Get* методов D3D9 в нашей обертке над ним, а перехватывать для этого Set* методы и сохранять значение там мы с толкнулись с некоторыми непредвиденными трудностями.

Перехватив все нужные методы мы столкнулись с одной интересной особеностью реализации StateBlock'ов в D3D9, при вызова BeginStateBlock() D3D9 меняет указатели в таблицы виртуальных функция устройства у следующих методов: SetMaterial, SetRenderState, SetTexture, SetTextureStageState, SetSamplerState, SetFVF, SetVertexShader, SetVertexShaderConstantF, SetVertexShaderConstantI, SetVertexShaderConstantB, SetStreamSource, SetStreamSourceFreq, SetIndices, SetPixelShader, SetPixelShaderConstantF, SetPixelShaderConstantI, SetPixelShaderConstantB, а остальные Set* функции просто не применяю новые значения состояний к устройству и только сохраняют их в StateBlock'е. Насколько я знаю в COM нет легального способа поменять указать в VTBL, т.е. это по сути хак. С этим возникли проблемы когда мы хотели вызвать оригинальные методы внутри BeginStateBlock\EndStateBlock.

вторник, 21 октября 2008 г.

iZ3D

Вот появилась статья о нашем мониторе на fcenter.ru

Вот цитата от автора обзора

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

пятница, 27 июня 2008 г.

PerfHUD для всех игр

Написал небольшой hook который перехватывает вызовы D3D9 и D3D10 и позволяет использовать PerfHUD для любой игры. Скачать можно тут

Инструкция к использованию такая:
1. Распаковываем архив
2. Запускаем DllInjector
3. Нажимаем InjectDll и выбираем ForcePerfHUDOn

понедельник, 16 июня 2008 г.

Spore Creature Editor

В сети появился Spore Creature Editor, это что-то с чем-то. До сентября можно пока тренироваться в создание существ, жаль инструментарий ограничен.

Вот что у меня получилось за пол-часа: :-)

пятница, 7 марта 2008 г.

Глюки и недокументированные вещи Direct3D, драйверов NVidia и ATI

Входе работы над нашим стерео драйвером были обнаружены множество глюков, которые в силу специфики в других приложениях видимо небыли замечены.
  1. Как то возникла необходимость выполнять операции прерывая рендеринг игры, пришлось использовать StateBlock'и для того чтобы никакие State игры не испортить. Оказывалось что если создать StateBlock при запуске программы CreateStateBlock(D3DSBT_ALL, ...), а потом его использовать Capture, а затем Apply то все OffsetStream'ов сбросятся в 0. Поэтому пришлось сохранять все смещения потоков (GetStreamSource) и потом их восстанавливать (SetStreamSource). А если же StateBlock создавать каждый раз и применять, то почему-то ещё портятся некоторые вертексные константы с индексами свыше 128, по крайней мере такие вещи были замечены на некоторых играх, причем между Create, Apply вообще не одна константа в коде не менялась.
  2. Частое переключение RenderTarget'ов, DepthStencil поверхностей сильно тормозит на NVidia, а на ATI только при включение AntiAlising'а.
  3. На NVidia не работает 255'ая константа для VertexShader'ов.
  4. ID3DXFont портит какие-то State'ы из за чего появлялись глюки в некоторых играх, при рисование FPS с помощью него. Поэтому вместо него стали пользоваться AngelCode Bitmap Font
  5. На NVidia не работает MRT если поставить в качестве RenderTarget'ов BackBuffer'а от двух SwapChain'ов если создать из со включенным антиалайзингом.
  6. Не где не сказано, но видимо подозревается как само собой разумеющееся. При установке 0'го RenderTarget'а Viewport и ScissorRect устанавливаются по размерам этой поверхности.
Вот вроде все что удалось вспомнить, надеюсь это кому-то будет полезно.

пятница, 15 февраля 2008 г.

Portal

Появился перевод интервью с Ким Свифт о замечательной и неповторимой игре Portal
http://portal.alex7kom.ru/63/
Расказывается о нашем друге кубике и GLaDOS. :-) Реомендую.

вторник, 5 февраля 2008 г.

Новый пост...

Наконец-то добрался до блога. Всех кстати с наступаюшим восточным новым годом. Все это время усиленно занимался разработкой нашего драйвера, просмотром сериалов и игрой в TF2 :-)
Теперь наш драйвер поддерживает анаглиф, так что любой кто хочет попробовать поиграть в стерео в любую D3D игрушку и завалялись красно-синие очки например от фильма "Дети Шпионы 3D" милости прости. Скачать его можете от сюда. После запуска Control Center'а нажмите Ctrl+3 для переключения в анаглиф режим. И можете запускать любую игрушку использующую Direct3D 8, 9. Рекомендую в стерео: Flatout, FarCry, HL: E2 (особенно поглядеть вблизи на вортигонта).