Войти
ПрограммированиеФорум2D графика и изометрия

Блендинг по альфа-маске в Direct3D (4 стр)

Страницы: 1 2 3 4
#45
16:04, 30 дек 2013

Вместе с MrShoor разыскали проблему. Резюмирую, вдруг кому-нибудь поможет:

При формате вершинных координат D3DDECLUSAGE_POSITIONT (внимание на T в конце) или аналогичного FVF формата D3DFVF_XYZRHW никакой обработки вершин не производится, и вершинные шейдеры не запускаются, т.к. эти форматы означают, что вершины уже обработаны и переведены в экранные координаты.

Вот цитата отсюда:

Vertex Declarations with D3DDECLUSAGE_POSITIONT

The presence of a vertex element with (D3DUSAGE_POSITIONT, 0) is used to indicate to the device that the vertex data coming in has already been through vertex processing (like an FVF with D3DFVF_XYZRHW bit set). At draw time, if the currently set declaration has an element with the (D3DUSAGE_POSITIONT, 0) semantic, the entire vertex processing is skipped (just as if an FVF with D3DFVF_XYZRHW bit has been set).

Ещё цитата отсюда:

A vertex declaration with a D3DDECLUSAGE_POSITIONT member implies that the vertex has already been transformed, which instructs the graphics card to not send this vertex through the vertex processing stages (transformation and lighting).

#46
16:13, 30 дек 2013

Итого, связка вершинного шейдера с пиксельным в случае с 2D выводом в экранных координатах не работает, остаётся мультитекстурирование.

#47
21:56, 6 янв 2014

В итоге вернулся к первому варианту с аддитивным наложением. Для бликов аддитивность не мешает, они монохромные и полупрозрачные.

На видео тестовый тайл бликов и всё те же тестовые окошки (будут другие, наборные из тайлов). В дополнение я реализовал отрисовку пятен крови в отдельную текстуру, чтобы объединять пятна в единый массив, использую эту текстуру как маску вывода бликов и также накладываю блики на лужи. Правда увидеть их можно только в HD на весь экран и то еле-еле. В игре видно, а на видео съедается артефактами сжатия. Но блики на лужах есть.

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Кстати, сам блик тайлю видеокартой, используя текстурные координаты больше 1.

Прошло более 6 месяцев
#48
13:28, 29 июля 2014

Для полноты истории с бликами вот видос с их финальным видом:

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Тут два слоя бликов:
1. Отражение потолочных ламп, этот слой движется медленно.
2. Диагональные отблески от каких-то других источников света (от стенных ламп, например). Этот слой движется быстрее.

На стёклах на полу блики подзадушены, на стеклянных частях кормушки и экранах, наоборот, подвыпячены для имитации более гладкой поверхности.

Страницы: 1 2 3 4
ПрограммированиеФорум2D графика и изометрия

Тема в архиве.