Несколько целевых объектов отрисовки (Direct3D 9)
Несколько целевых объектов отрисовки (MRT) относятся к возможности отрисовки на нескольких поверхностях (см. IDirect3D9Surface) с одним вызовом рисования. Эти поверхности можно создавать независимо друг от друга. Целевые объекты отрисовки можно задать с помощью IDirect3Device9::SetRenderTarget.
Несколько целевых объектов отрисовки имеют следующие ограничения:
Все целевые поверхности отрисовки, используемые вместе, должны иметь одинаковую битовую глубину, но могут иметь разные форматы, если только D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS крышка не задана.
Все поверхности нескольких целевых объектов отрисовки должны иметь одинаковую ширину и высоту.
Некоторые реализации не могут выполнять операции после пиксельного шейдера для нескольких целевых объектов отрисовки, включая: без дитеринга, альфа-теста, тумана, не смешивания или маскирования, кроме z-теста и теста наборов элементов. Устройства, которые могут поддерживать операции шейдера после пикселя, установите бит крышки на D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING.
Если задано ограничение D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING, необходимо сначала обратиться к IDirect3D9::CheckDeviceFormat с результатом USAGE_QUERY_POSTPIXELSHADER_BLENDING для конкретного формата поверхности. Если значение false, операции смешивания шейдера после пикселя не будут доступны для конкретного формата поверхности. Если значение true, устройство должно применять то же состояние ко всем одновременным целевым объектам отрисовки следующим образом:
- Альфа-смесь: значение цвета в OCi смешается с целевым объектом отрисовки ith.
- Альфа-тест: сравнение произойдет с oC0. Если сравнение завершается сбоем, то тест пикселя завершается для всех целевых объектов отрисовки.
- Туман: Отрисовка целевого объекта 0 получит туман. Другие целевые объекты отрисовки не определены. Реализации могут запотевать их все с помощью одного и того же состояния.
- Dithering: Undefined.
Не поддерживается защита.
Некоторые реализации не применяют маску записи выходных данных (D3DRS_COLORWRITEENABLE). Те, которые могут иметь независимые маски записи цвета. Это выражается с помощью нового бита возможностей. Доступное количество доступных независимых масок записи цвета равно максимальному количеству элементов, для которых устройство может.
Новые аппаратные крышки:
D3DCAPS9.NumSimultaneousRTs
// The value is 1 for all hardware except those that
// can support this feature. It is never 0.
D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS - True if the hardware can support it
D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING - True if the hardware can support it
Связанные разделы