Varios destinos de representación (Direct3D 9)

Varios destinos de representación (MRT) hace referencia a la capacidad de representar en varias superficies (vea IDirect3D9Surface) con una sola llamada a draw. Estas superficies se pueden crear independientemente entre sí. Los destinos de representación se pueden establecer mediante IDirect3DDevice9::SetRenderTarget.

Varios destinos de representación tienen las siguientes restricciones:

  • Todas las superficies de destino de representación usadas juntas deben tener la misma profundidad de bits, pero pueden ser de diferentes formatos, a menos que se establezca el límite de D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS.

  • Todas las superficies de un destino de representación múltiple deben tener el mismo ancho y alto.

  • Algunas implementaciones no pueden realizar operaciones de sombreador posterior a píxeles en varios destinos de representación, como: sin atraso, prueba alfa, sin fogging, sin combinación ni enmascaramiento, excepto la prueba z-test y la galería de símbolos. Los dispositivos que pueden admitir operaciones de sombreador posteriores a píxeles establecen el bit de límite en D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING.

    Cuando se establece el límite de D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING, primero debe consultar IDirect3D9::CheckDeviceFormat con el resultado USAGE_QUERY_POSTPIXELSHADER_BLENDING para el formato de superficie específico. Si es false, no habrá operaciones de combinación de sombreador posterior a píxeles disponibles para ese formato de superficie específico. Si es true, se espera que el dispositivo aplique el mismo estado a todos los destinos de representación simultáneos de la siguiente manera:

    • Combinación alfa: el valor de color de oCi se combina con el destino de representación ith.
    • Prueba alfa: la comparación se realizará con oC0. Si se produce un error en la comparación, la prueba de píxeles finaliza para todos los destinos de representación.
    • Niebla: el objetivo de representación 0 se verá empantado. Otros destinos de representación no están definidos. Las implementaciones pueden optar por empañarlas con el mismo estado.
    • Dithering: Sin definir.
  • No se admite ningún suavizado de contorno.

  • Algunas de las implementaciones no aplican la máscara de escritura de salida (D3DRS_COLORWRITEENABLE). Aquellos que pueden, tienen máscaras de escritura de color independientes. Esto se expresa mediante un nuevo bit de funcionalidad. El número de máscaras de escritura de color independientes disponibles será igual al número máximo de elementos de los que el dispositivo es capaz.

Nuevos límites de hardware:

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

Canalización de píxeles