Changes

Jump to navigation Jump to search
587 bytes added ,  05:07, 12 November 2014
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)
EMITVERTEX (?)
+
EMIT
|  (geometry shader only) Emits a vertex.
+
|  (geometry shader only) Emits a vertex. SETEMIT must be called before this.
 
|-
 
|-
 
|  0x2B
 
|  0x2B
?
+
4
GETVERTEX (?)
+
SETEMIT
|  (geometry shader only) Gets next round of input data ?. Parameter meaning unknown but is located at bit 22 and is 4 bit long.
+
|  (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
373

edits

Navigation menu