GPU/Shader Instruction Set: Difference between revisions
mNo edit summary |
woooh, geometry shader opcodes (probably) figured out ! |
||
Line 79: | Line 79: | ||
| 0x4 | | 0x4 | ||
| Uniform boolean ID (BOOL) | | Uniform boolean ID (BOOL) | ||
|- | |||
| 0x1A | |||
| 0x6 | |||
| Opcode | |||
|} | |||
Format 4 : (used for SETEMIT) | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size (bits) | |||
! Description | |||
|- | |||
| 0x16 | |||
| 0x2 | |||
| Primitive ID (PRIMID) | |||
|- | |||
| 0x18 | |||
| 0x2 | |||
| Vertex ID (VTXID) | |||
|- | |- | ||
| 0x1A | | 0x1A | ||
Line 171: | Line 191: | ||
| 0x2A | | 0x2A | ||
| 0 (no param) | | 0 (no param) | ||
| | | EMIT | ||
| (geometry shader only) Emits a vertex. | | (geometry shader only) Emits a vertex. SETEMIT must be called before this. | ||
|- | |- | ||
| 0x2B | | 0x2B | ||
| | | 4 | ||
| | | SETEMIT | ||
| (geometry shader only) | | (geometry shader only) Sets VTXID and PRIMID for the next EMIT instruction. VTXID is the ID of the vertex about to be emitted within the primitive, while PRIMID is zero if we are just emitting a single vertex and non-zero if are emitting a vertex and primitive simultaneously. Note that the output vertex buffer (which holds 4 vertices) is '''not''' cleared when the primitive is emitted, meaning that vertices from the previous primitive can be reused for the current one. | ||
|- | |- | ||
| 0x2E | | 0x2E |