Wiele obiektów docelowych renderowania (Direct3D 9)
Wiele elementów docelowych renderowania (MRT) odnosi się do możliwości renderowania na wielu powierzchniach (zobacz IDirect3D9Surface) z jednym wywołaniem rysowania. Powierzchnie te można tworzyć niezależnie od siebie. Obiekty docelowe renderowania można ustawić przy użyciu IDirect3DDevice9::SetRenderTarget.
Wiele obiektów docelowych renderowania ma następujące ograniczenia:
Wszystkie powierzchnie docelowe renderowania używane razem muszą mieć taką samą głębokość bitów, ale mogą mieć różne formaty, chyba że ustawiono limit D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS.
Wszystkie powierzchnie wielu obiektów docelowych renderowania powinny mieć taką samą szerokość i wysokość.
Niektóre implementacje nie mogą wykonywać operacji cieniowania po pikselach na wielu elementach docelowych renderowania, w tym: bez ditheringu, testu alfa, bez zamglenia, mieszania ani maskowania, z wyjątkiem testu z i testu wzornika. Urządzenia, które mogą obsługiwać operacje cieniowania po pikselach, ustawiają bit limitu na D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING.
Po ustawieniu limitu D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING należy najpierw zapoznać się z IDirect3D9::CheckDeviceFormat z wynikiem USAGE_QUERY_POSTPIXELSHADER_BLENDING dla określonego formatu powierzchni. Jeśli wartość false, żadne operacje łączenia cieniowania po pikselach nie będą dostępne dla tego konkretnego formatu powierzchni. Jeśli wartość true, urządzenie ma zastosować ten sam stan do wszystkich równoczesnych elementów docelowych renderowania w następujący sposób:
- Mieszanka alfa: wartość koloru w obiekcie oCi jest mieszana z obiektem docelowym renderowania ith.
- Test alfa: porównanie będzie miało miejsce z okC0. Jeśli porównanie zakończy się niepowodzeniem, test pikseli zostanie zakończony dla wszystkich elementów docelowych renderowania.
- Mgła: Renderuj cel 0 zostanie sfałszowany. Inne obiekty docelowe renderowania są niezdefiniowane. Implementacje mogą zdecydować się na zmięcie ich wszystkich przy użyciu tego samego stanu.
- Dithering: Niezdefiniowane.
Nie jest obsługiwane żadne antyaliasing.
Niektóre implementacje nie stosują maski zapisu wyjściowego (D3DRS_COLORWRITEENABLE). Te, które mogą mieć niezależne maski zapisu koloru. Jest to wyrażane przy użyciu nowego bitu możliwości. Liczba dostępnych masek zapisu w kolorze niezależnym będzie równa maksymalnej liczbie elementów, z których urządzenie może korzystać.
Nowe limity sprzętu:
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
Tematy pokrewne