четверг, 26 апреля 2007 г.

Новая версия стереодрайвера

Вот новый релиз моего стеродрайвера RealStereo 0.3b реализующий стерео в режиме оптимизированный анаглиф. Драйвер поддерживает только Direct3D 9 программы.

Вкратце, кому интересно, стереодрайвер работает так:
  • Перехватывает вызовы Direct3D9
  • Вместо BackBuffer'а, DepthStencil и RenderTarget текстур/поверхностей создаются стерео текстуры/поверхности. Они отличаются тем что должны хранят не один а два ракурса (для левого и правого глаза).
  • Каждый Draw вызов дублируется для обоих ракурсов. При этом если используется вертексный шейдер то он модифицируется для смещения камеры, иначе модифицируется матрица проецирования. А также если используются RT текстуры, то выбирается необходимый ракурс.
  • Во время вызова Present драйвер объединяет оба ракурса BackBuffer'а в один с помощью пиксельного шейдера.
Самая нетривиальная тут задача конечно модификации кода вертексных шейдеров, хотя было и много других подводных камней.

Тестировал в играх HL2, HMM5, Flatout 2. Есть небольшие глюки, по этому и beta.

К сожалению не представляю как реализовать PageFlip из за того что драйвера видеокарты не предоставляют доступа к 3-PIN VGA, а также незнаю как прервать отрисовку текущего кадра и в этот момент нарисовать другой ракурс в BackBuffer. Наверное, поэтому разработку прийдеться прекратить. Так как стерео в ангалиф режиме всетаки сильно ущербное по цветопередачи.

среда, 25 апреля 2007 г.