Renderizando para várias texturas com uma passagem no directx 11

Eu estou tentando processar para duas texturas com uma passagem usando o C ++ directx 11 SDK. Eu quero uma textura para conter a cor de cada pixel da imagem resultante (o que eu normalmente vejo na tela ao renderizar uma cena 3D), e outra textura para conter a normal de cada pixel e profundidade (3 float for normal e 1 float para profundidade). No momento, o que posso pensar é criar dois destinos de renderização e renderizar a primeira passagem, já que as cores e a segunda passam as normais e a profundidade para cada destino de renderização, respectivamente. No entanto, isso parece um desperdício de tempo, porque eu posso obter a informação da cor, normal e profundidade de cada pixel na primeira passagem. Então, existe uma maneira de, de alguma forma, gerar duas texturas com o pixel shader?

Qualquer ajuda seria apreciada.

P.S. Estou pensando em algo ao longo das linhas de RWTexture2D ou RWStructuredBuffer no pixel shader. Um pouco de fundo: vou precisar das duas imagens para processamento adicional no shader de computação. O que traz uma questão paralela de sincronização: como o shader de pixel (diferentemente do shader de computação) escreve cada pixel um de cada vez, como eu saberia quando o shader de pixel terminava e informaria ao shader de computador para iniciar o pós-processamento da imagem?

questionAnswers(1)

yourAnswerToTheQuestion