dcl_usage salida (sm1, sm2, sm3 - vs asm)
Los distintos tipos de registros de salida se han contraído en doce registros de salida (dos para color, ocho para textura, uno para posición y otro para niebla y tamaño de punto). Se pueden usar para cualquier cosa que el usuario quiera interpolar para el sombreador de píxeles: coordenadas de textura, colores, niebla, etc.
Los registros de salida requieren declaraciones que incluyan semántica. Por ejemplo, los registros de posición y tamaño de punto antiguos se reemplazan declarando un registro de salida por una semántica de posición o tamaño de punto.
De los doce registros de salida, cualquier diez (no necesariamente o0 a o9) tiene cuatro componentes (xyzw), otro debe declararse como posición (y también debe incluir los cuatro componentes) y, opcionalmente, uno más puede ser un tamaño de punto escalar.
Sintaxis
La sintaxis para declarar los registros de salida es similar a las declaraciones del registro de entrada:
- dcl_semantics o[.write_mask]
Dónde:
- dcl_semantics puede usar el mismo conjunto de semántica que para la declaración de entrada. Los nombres semánticos proceden de D3DDECLUSAGE (y se emparejan con un índice, como position3). Siempre debe haber un registro de salida con la semántica positiont0 cuando no se usa para procesar vértices. La semántica positiont0 y la semántica de pointsize0 son las únicas que tienen significado más allá de simplemente permitir la vinculación de vértices a sombreadores de píxeles. En el caso de los sombreadores con control de flujo, se supone que se declara la salida en el peor de los casos. No hay valores predeterminados si un sombreador no genera realmente lo que declara que debe (debido al control de flujo).
- o es un registro de salida. Consulte Output_Registers.
- write_mask indica el mismo registro de salida que se puede declarar varias veces (por lo que se puede aplicar una semántica diferente a componentes individuales), cada vez con una máscara de escritura única. Sin embargo, la misma semántica no se puede usar varias veces en una declaración. Esto significa que los vectores deben ser cuatro componentes o menos y no pueden atravesar límites de registro de cuatro componentes (registros individuales). Cuando se usa la semántica de tamaño de punto, debe tener una máscara de escritura completa porque se considera escalar. Cuando se usa la semántica de posición, debe tener una máscara de escritura completa porque se deben escribir los cuatro componentes.
Comentarios
Versiones del sombreador de vértices | 3_0 | 3_sw |
---|---|---|
dcl_usage | x | x |
Todas las instrucciones dcl_usage deben aparecer antes de la primera instrucción ejecutable.
Ejemplos de declaración
vs_3_0
dcl_color4 o3.x // color4 is a semantic name.
dcl_texcoord3 o3.yz // Different semantics can be packed into one register.
dcl_fog o3.w
dcl_tangent o4.xyz
dcl_position o7.xyzw // position must be declared to some unique register
// in a vertex shader, with all 4 components.
dcl_psize o6 // Pointsize cannot have a mask
// (that is, mask is full .xyzw)
// This is an implied scalar register.
// No other semantics can be assigned to any components
// of this register.
// If pointsize declaration is not used (typical),
// only 11 "out" registers are available, not 12.
// Pixel shaders cannot see this value.
Temas relacionados
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de