Вместе с 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).
Итого, связка вершинного шейдера с пиксельным в случае с 2D выводом в экранных координатах не работает, остаётся мультитекстурирование.
В итоге вернулся к первому варианту с аддитивным наложением. Для бликов аддитивность не мешает, они монохромные и полупрозрачные.
На видео тестовый тайл бликов и всё те же тестовые окошки (будут другие, наборные из тайлов). В дополнение я реализовал отрисовку пятен крови в отдельную текстуру, чтобы объединять пятна в единый массив, использую эту текстуру как маску вывода бликов и также накладываю блики на лужи. Правда увидеть их можно только в HD на весь экран и то еле-еле. В игре видно, а на видео съедается артефактами сжатия. Но блики на лужах есть.
Кстати, сам блик тайлю видеокартой, используя текстурные координаты больше 1.
Для полноты истории с бликами вот видос с их финальным видом:
Тут два слоя бликов:
1. Отражение потолочных ламп, этот слой движется медленно.
2. Диагональные отблески от каких-то других источников света (от стенных ламп, например). Этот слой движется быстрее.
На стёклах на полу блики подзадушены, на стеклянных частях кормушки и экранах, наоборот, подвыпячены для имитации более гладкой поверхности.
Тема в архиве.