Vários destinos de renderização (Direct3D 9)
Múltiplos Alvos de Renderização (MRT) refere-se à capacidade de renderizar para várias superfícies (consulte IDirect3D9Surface) com uma única chamada de desenho. Estas superfícies podem ser criadas independentemente umas das outras. Os destinos de renderização podem ser definidos usando IDirect3DDevice9::SetRenderTarget.
Vários destinos de renderização têm as seguintes restrições:
Todas as superfícies de destino de renderização usadas juntas devem ter a mesma profundidade de bits, mas podem ter formatos diferentes, a menos que o limite de D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS esteja definido.
Todas as superfícies de um destino de renderização múltipla devem ter a mesma largura e altura.
Algumas implementações não podem executar operações de sombreador pós-pixel em vários destinos de renderização, incluindo: sem pontilhamento, teste alfa, sem nebulização, sem mistura ou mascaramento, exceto o teste z e o teste de estêncil. Os dispositivos que podem suportar operações de sombreador pós-pixel definem o bit de limite como D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING.
Quando o limite de D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING estiver definido, você deve primeiro consultar o IDirect3D9::CheckDeviceFormat com o resultado USAGE_QUERY_POSTPIXELSHADER_BLENDING para o formato de superfície específico. Se false, nenhuma operação de mistura de sombreador pós-pixel estará disponível para esse formato de superfície específico. Se verdadeiro, espera-se que o dispositivo aplique o mesmo estado a todos os destinos de renderização simultânea da seguinte maneira:
- Mistura alfa: O valor de cor em oCi é misturado com o destino de renderização ith.
- Teste alfa: A comparação acontecerá com oC0. Se a comparação falhar, o teste de pixel será encerrado para todos os destinos de renderização.
- Nevoeiro: O alvo de renderização 0 ficará embaçado. Outros destinos de renderização são indefinidos. As implementações podem optar por embaçar todos eles usando o mesmo estado.
- Dithering: Indefinido.
Não há suporte para suavização de serrilhado.
Algumas das implementações não aplicam a máscara de gravação de saída (D3DRS_COLORWRITEENABLE). Aqueles que podem, têm máscaras de cor independentes. Isso é expresso usando um novo bit de capacidade. O número de máscaras de gravação de cores independentes disponíveis será igual ao número máximo de elementos que o dispositivo é capaz de fazer.
Novos limites 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
Tópicos relacionados