Share via


Registro de color de salida

Los registros de salida de color del sombreador de píxeles (oC#) son registros de solo escritura que generan resultados en varios destinos de representación.

Sintaxis

Oc #

 

Donde:

Nombre Descripción
oC0 destino de representación n.º 0
oC1 destino de representación n.º 1
oC2 destino de representación n.º 2
oC3 destino de representación n.º 3

 

Comentarios

  • Si oCn está escrito pero no hay ningún destino de representación correspondiente, se omite esta escritura en oCn.
  • Los estados de representación D3DRS_COLORWRITEENABLE, D3DRS_COLORWRITEENABLE1, D3DRS_COLORWRITEENABLE2 y D3DRS_COLORWRITEENABLE3 determinar qué componentes de oCn se escriben en última instancia en el destino de representación (después de la combinación, si procede). Si el sombreador escribe algunos pero no todos los componentes definidos por los estados de representación de D3DRS_COLORWRITEENABLE* para un registro oCn determinado, los canales no escritos generan valores no definidos en el destino de representación correspondiente. Si no se escribe ninguno de los componentes de oCn, el destino de representación correspondiente no se debe actualizar en absoluto (como se indicó anteriormente), por lo que los estados de representación de D3DRS_COLORWRITEENABLE* no se aplican.

Restricciones del modelo de sombreador 2

  • oCn solo se puede escribir con la instrucción mov - ps .
  • oC0 siempre debe escribirse en el sombreador.
  • No se permite ningún swizzle de origen (excepto .xyzw = default swizzle) o modificador de origen al escribir en cualquier oCn.
  • No se permite ninguna máscara de escritura de destino (excepto .xyzw = máscara predeterminada) o modificador de instrucción al escribir en cualquier oCn.
  • Si se escribe oCn, también debe escribirse oC0 - oCn-1. Por ejemplo, para escribir en oC2, también debe escribir en oC0 y oC1.
  • Como máximo, se permite una escritura en cualquier oC# por sombreador.
  • Para ps_2_x y ps_3_0, no se puede escribir en registros de oC# y oD# en el control dinámico de flujo o predicación (las escrituras en oC# dentro del control de flujo estático están bien).

Restricciones del modelo de sombreador 3

  • Para ps_3_0, los registros de salida oC# y oD# se pueden escribir varias veces. La salida del sombreador de píxeles procede del contenido de los registros de salida al final de la ejecución del sombreador. Si no se produce una escritura en un registro de salida, quizás debido al control de flujo o si el sombreador simplemente no lo escribió, el rendertarget correspondiente tampoco se actualiza. Si se escribe un subconjunto de los canales de un registro de salida, los valores no definidos se escribirán en los canales restantes.
  • Para ps_3_0, los registros de oC# se pueden escribir con cualquier máscara de escritura.
  • Para ps_2_x y ps_3_0, no se puede escribir en registros de oC# y oD# en el control dinámico de flujo o predicación (las escrituras en oC# dentro del control de flujo estático están bien).
  • No puede realizar ningún cálculo de degradado (o operaciones que invocan implícitamente cálculos de degradado como texld - ps_2_0 y up, texldb - ps, texldp - ps) dentro de instrucciones de control de flujo cuyas condiciones de bifurcación varían según una base primitiva (es decir: instrucciones de control de flujo dinámico). La predicación de instrucciones no se considera control de flujo dinámico.

Registros

Varios destinos de representación (Direct3D 9)