Mehrere Renderziele (Direct3D 9)
Multiple Render Targets (MRT) bezieht sich auf die Möglichkeit zum Rendern auf mehreren Oberflächen (siehe IDirect3D9Surface) mit einem einzelnen Draw-Aufruf. Diese Oberflächen können unabhängig voneinander erstellt werden. Renderziele können mit IDirect3DDevice9::SetRenderTargetfestgelegt werden.
Mehrere Renderziele haben die folgenden Einschränkungen:
Alle gemeinsam verwendeten Renderzieloberflächen müssen dieselbe Bittiefe aufweisen, können jedoch unterschiedliche Formate aufweisen, es sei denn, die D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS Cap ist festgelegt.
Alle Oberflächen eines mehrfachen Renderziels sollten dieselbe Breite und Höhe aufweisen.
Einige Implementierungen können keine Vorgänge nach dem Pixelshader für mehrere Renderziele ausführen, darunter: kein Dithering, Alphatest, kein Nebeln, keine Blendung oder Maskierung, außer dem Z-Test und schablonentest. Geräte, die Post-Pixelshadervorgänge unterstützen können, legen das Kapitälchen auf D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING fest.
Wenn die D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING Feststelltaste festgelegt ist, müssen Sie zuerst die IDirect3D9::CheckDeviceFormat- mit dem USAGE_QUERY_POSTPIXELSHADER_BLENDING Ergebnis für das spezifische Oberflächenformat konsultieren. Bei "false" sind für dieses bestimmte Oberflächenformat keine Vermischungsvorgänge nach dem Pixelshader verfügbar. Bei "true" wird erwartet, dass das Gerät denselben Zustand auf alle gleichzeitigen Renderziele wie folgt anwendet:
- Alpha-Mischung: Der Farbwert in oCi wird mit dem Ith-Renderziel gemischt.
- Alphatest: Der Vergleich erfolgt mit oC0. Wenn der Vergleich fehlschlägt, wird der Pixeltest für alle Renderziele beendet.
- Nebel: Renderziel 0 wird abgeblengt. Andere Renderziele sind nicht definiert. Implementierungen können auswählen, dass sie alle mit demselben Zustand beschlagt werden.
- Dithering: Undefiniert.
Es wird keine Antialiasing unterstützt.
Einige der Implementierungen wenden das Ausgabeschreibformat (D3DRS_COLORWRITEENABLE) nicht an. Solche, die unabhängigen Farbschreibmasken aufweisen können. Dies wird mithilfe eines neuen Funktionsbits ausgedrückt. Die Anzahl der verfügbaren unabhängigen Farbschreibformate entspricht der maximalen Anzahl von Elementen, die das Gerät verwenden kann.
Neue Hardwarekappen:
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
Verwandte Themen