пятница, 29 мая 2009 г.

iZ3D драйвер версии 1.10RC1

Вот наконец и выпустили 1.10 версию (скачать можно тут http://www.iz3d.com/t-dcdriver.aspx). С этой версией в ходе дебаггинга много поработали над артефактами играми, поняли причину многих проблем с играми в стерео и много из них исправили.

Чаще всего встречаются следующие проблемы (NVidia тоже упоминала об этом в своей презентация):

  1. Реконструкция координат в пиксельном шейдер по карте глубины. Обычно по этой причине в большинстве игр некорректно рисуются тени (например, Crysis, STALKER, UT3, GTA4 и т.п.). Пока нет идей как универсально исправить эту проблему для таких игр, но мы работаем над данной проблемой. Если в PS напрямую передается обратная матрица проецирования (Dead Space, пример NVidia Deffered Shading), то пока мы можем вручную решить данную проблему с помощью профайлов. Crysis к примеру вообще напрямую не использует в шейдере обратную матрицу проецирования, а делает более хитрые операции с константами. Возможно когда-нибудь наступит счастье и большинство разработчиков игр будут используемый предлогаемый NVidia способ, сохраняя Clip space X координату в RT и восстанавливая World space координату используя этот RT, тогда все эффекты будут нормально работать.
  2. Эффекты, надписи над объектами и т.п. рисуются без использования матрицы перспективной проекции. Например данный эффект можно пронаблюдать с источниками света в Mirror's Edge или в Dead Space которые рисуются в моно, а также к примеру в WoW надписи над объектами рисуются также в моно. Данную проблему мы не можем исправить, т.к. не знаем на какую глубину объект следует поместить.
  3. Моно объекты рисуются с использованием перспективной матрицы проецирования. Это обратная ситуация когда к примеру 2D интерфейс рисуется с использованием той же матрицы проецирования что и вся сцена. Чтобы сделать в таких случаях интерфейс моно мы указываем драйверу что используемый вертексный шейдер рисует всегда 2D интерфейс и драйвер использует эту информацию при рисование сцены. Бывает более сложная ситуация когда один и тот же шейдер используется и для 2D и для 3D объектов (UT3, GoW) но мы в большинстве случаев можем решить подобную проблему.
  4. Игра располагает объекты на неправильной глубине. В некоторых играх небо располагают слишком близко к сцене, что дает неправильный стереоэффект. А также, очень часто оружие персонажа располагают на большом расстояние от самой сцены и из за этого визуально нельзя добиться хорошей глубины сцены.


Вот пожалуй самые основные встречающиеся нам проблемы.

9 комментариев:

OkKo комментирует...

Правильно ли я понимаю что драйвер перехватывает вызовы Direct3D (BeginScene, DrawPrimitive etc.), рисует картинку в 2 текстуры с разных ракурсов, рисует квад на экран с текстурами, а потом используется пиксельный шейдер?
Я просто пытаюсь сделать программку которая делает что то подобное, и есть ряд вопросов :)

Dragon комментирует...

Да, вкратце, драйвер перехватывает все функции D3D и дублирует все вызовы Draw в левый и правый ракурсы (текстуры), а в Present показывает левый и правый ракурсы так как надо для соответствующего устройства.

OkKo комментирует...

спасибо за ответ :)
интересный блог, много полезной специфической информации, я в сети на эту тему очень мало нашел, а тут даже на русском языке! )
я реализовал вариант с одной текстурой (хочу попробовать делать blur или что нить вроде того). на простых примерах из dx sdk сработало, сейчас пытаюсь тестировать на реальных играх.

Dragon комментирует...

Отлично, что блог кому-то полезен.

вова комментирует...

дракоша,братишка,родственник!!!!!

короче у меня не пашет нечерта!!!!

koroed.92 комментирует...

В сети пишут что с помощью этого драйвера можно играть в 3D режиме на любом мониторе. Правда-ли?

Dragon комментирует...

Да, с анаглиф очками и нашим драйвером вы можете играть в стерео на любом мониторе

koroed.92 комментирует...

А что-бы обычные фильмы в 3D смотреть. Есть такой драйвер?

Dragon комментирует...

Есть различные конверторы 2D видео в стерео, к примеру http://3dfier.blogspot.com/ .
Если интересно узнать поподробней, рекомендую ресурс www.really.ru