Multiple Render Targets (Direct3D 9)

Multiple Render Targets (MRT) mengacu pada kemampuan untuk merender ke beberapa permukaan (lihat IDirect3D9Surface) dengan satu panggilan gambar. Permukaan-permukaan ini dapat dibuat secara independen satu sama lain. Target render dapat diatur menggunakan IDirect3DDevice9::SetRenderTarget.

Beberapa target render memiliki batasan berikut:

  • Semua permukaan target render yang digunakan bersama-sama harus memiliki kedalaman bit yang sama tetapi dapat memiliki format yang berbeda, kecuali batas D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS diatur.

  • Semua permukaan dari beberapa target render harus memiliki lebar dan tinggi yang sama.

  • Beberapa implementasi tidak dapat melakukan operasi shader pasca-piksel pada beberapa target render, termasuk: tidak ada dithering, alpha test, tidak ada fogging, tidak ada blending atau masking, kecuali uji z-test dan stensil. Perangkat yang dapat mendukung operasi shader pasca-piksel mengatur bit batas ke D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING.

    Saat batas D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING diatur, Anda harus terlebih dahulu berkonsultasi dengan IDirect3D9::CheckDeviceFormat dengan hasil USAGE_QUERY_POSTPIXELSHADER_BLENDING untuk format permukaan tertentu. Jika false, tidak ada operasi penpaduan shader pasca-piksel yang akan tersedia untuk format permukaan tertentu. Jika true, perangkat diharapkan menerapkan status yang sama ke semua target render simultan sebagai berikut:

    • Campuran alpha: Nilai warna dalam oCi dipadukan dengan target render ith.
    • Uji Alfa: Perbandingan akan terjadi dengan oC0. Jika perbandingan gagal, pengujian piksel dihentikan untuk semua target render.
    • Kabut: Render target 0 akan terpakai. Target render lainnya tidak terdefinisi. Implementasi dapat memilih untuk mengabut semuanya menggunakan status yang sama.
    • Dithering: Undefined.
  • Tidak ada antialias yang didukung.

  • Beberapa implementasi tidak menerapkan output write mask (D3DRS_COLORWRITEENABLE). Mereka yang dapat, memiliki masker tulis warna independen. Ini diekspresikan menggunakan bit kemampuan baru. Jumlah masker tulis warna independen yang tersedia akan sama dengan jumlah maksimum elemen yang mampu dilakukan perangkat.

Batas perangkat keras baru:

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

Alur Piksel