Renderable: Difference between revisions

23,694 bytes removed ,  7 months ago
Split into subpages.
(Remove vertex data section as it is described by vertex descriptor resources.)
(Split into subpages.)
Tag: Replaced
Line 14:
Each Renderable contains one or more meshes, each of which is made up of an index buffer, a vertex buffer, and a set of [[Vertex Descriptor|vertex descriptors]]. The vertex descriptors define the data in the vertex buffers.
 
= StructuresVariants =
{{subpage|PlayStation 3|text=Information on the Renderable resource type used on PlayStation 3.}}
=== Renderable ===
{{subpage|Xbox 360|text=Information on the Renderable resource type used on Xbox 360.}}
==== PlayStation 3, Xbox 360 ====
{{subpage|PC|text=Information on the Renderable resource type used on PC.}}
{| class="wikitable"
{{subpage|Remastered|text=Information on the Renderable resource type used in Burnout Paradise Remastered.}}
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[Vector3Plus]] || mBoundingSphere || ||
|-
| 0x10 || 0x2 || uint16_t || mu16VersionNumber || Version || 11
|-
| 0x12 || 0x2 || uint16_t || mu16NumMeshes || Number of meshes ||
|-
| 0x14 || 0x4 || [[#RenderableMesh|RenderableMesh]]** || mppMeshes || Meshes ||
|-
| 0x18 || 0x4 || ObjectScopeTextureInfo* || mpObjectScopeTextureInfo || || Set at runtime
|-
| 0x1C || 0x2 || uint16_t || mu16Flags || Flags || See [[#Renderable flags|flags]]
|}
 
==== PC, PC (Remastered) ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[Vector3Plus]] || mBoundingSphere || ||
|-
| 0x10 || 0x2 || uint16_t || mu16VersionNumber || Version || 11
|-
| 0x12 || 0x2 || uint16_t || mu16NumMeshes || Number of meshes ||
|-
| 0x14 || 0x4 || [[#RenderableMesh|RenderableMesh]]** || mppMeshes || Meshes ||
|-
| 0x18 || 0x4 || ObjectScopeTextureInfo* || mpObjectScopeTextureInfo || || Unused
|-
| 0x1C || 0x2 || uint16_t || mu16Flags || Flags || See [[#Renderable flags|flags]]
|-
| 0x1E || 0x2 || || || Padding ||
|-
| 0x20 || 0x4 || [[#renderengine::IndexBuffer|IndexBuffer]]* || ? || Index buffer ||
|-
| 0x24 || 0x4 || [[#renderengine::VertexBuffer|VertexBuffer]]* || ? || Vertex buffer ||
|}
 
==== PlayStation 4, Switch ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[Vector3Plus]] || mBoundingSphere || ||
|-
| 0x10 || 0x2 || uint16_t || mu16VersionNumber || Version || 11
|-
| 0x12 || 0x2 || uint16_t || mu16NumMeshes || Number of meshes ||
|-
| 0x14 || 0x4 || || || Padding ||
|-
| 0x18 || 0x8 || [[#RenderableMesh|RenderableMesh]]** || mppMeshes || Meshes ||
|-
| 0x20 || 0x8 || ObjectScopeTextureInfo* || mpObjectScopeTextureInfo || || Unused
|-
| 0x28 || 0x2 || uint16_t || mu16Flags || Flags || See [[#Renderable flags|flags]]
|-
| 0x2A || 0x6 || || || Padding ||
|-
| 0x30 || 0x8 || [[#renderengine::IndexBuffer|IndexBuffer]]* || ? || Index buffer ||
|-
| 0x38 || 0x8 || [[#renderengine::VertexBuffer|VertexBuffer]]* || ? || Vertex buffer ||
|}
 
=== RenderableMesh ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[#PackedOobb|PackedOobb]] || mPackedBoundingBox || ||
|-
| 0x10 || 0xC || [[#DrawIndexedParameters|DrawIndexedParameters]] || mDrawIndexedParameters || ||
|-
| 0x1C || 0x4 || [[Material|MaterialAssembly]]* || mpMaterialAssembly || ||
|-
| 0x20 || 0x1 || uint8_t || mu8NumVertexDescriptors || Number of vertex descriptors ||
|-
| 0x21 || 0x1 || uint8_t || mu8InstanceCount || ||
|-
| 0x22 || 0x1 || uint8_t || mu8NumVertexBuffers || Number of vertex buffers ||
|-
| 0x23 || 0x1 || uint8_t || mu8Flags || Flags || Always 0?
|-
| 0x24 || 0x4 || void*[1] || maBuffers || Buffers || Index buffers, then vertex buffers, then vertex descriptors.<br />See [[#renderengine::IndexBuffer|IndexBuffer]] and [[#renderengine::VertexBuffer|VertexBuffer]]
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[#PackedOobb|PackedOobb]] || mPackedBoundingBox || ||
|-
| 0x10 || 0x10 || [[#DrawIndexedParameters|DrawIndexedParameters]] || mDrawIndexedParameters || ||
|-
| 0x20 || 0x4 || [[Material|MaterialAssembly]]* || mpMaterialAssembly || ||
|-
| 0x24 || 0x1 || uint8_t || mu8NumVertexDescriptors || Number of vertex descriptors ||
|-
| 0x25 || 0x1 || uint8_t || mu8InstanceCount || ||
|-
| 0x26 || 0x1 || uint8_t || mu8NumVertexBuffers || Number of vertex buffers ||
|-
| 0x27 || 0x1 || uint8_t || mu8Flags || Flags || Always 0?
|-
| 0x28 || 0x4 || void*[1] || maBuffers || Buffers || Index buffers, then vertex buffers, then vertex descriptors.<br />See [[#renderengine::IndexBuffer|IndexBuffer]] and [[#renderengine::VertexBuffer|VertexBuffer]]
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x40 || [[Matrix44Affine]] || ? || Bounding box ||
|-
| 0x40 || 0x18 || [[#DrawIndexedParameters|DrawIndexedParameters]] || mDrawIndexedParameters || ||
|-
| 0x58 || 0x4 || [[Material|MaterialAssembly]]* || mpMaterialAssembly || ||
|-
| 0x5C || 0x1 || uint8_t || mu8NumVertexDescriptors || Number of vertex descriptors ||
|-
| 0x5D || 0x1 || uint8_t || mu8InstanceCount || ||
|-
| 0x5E || 0x1 || uint8_t || mu8NumVertexBuffers || Number of vertex buffers ||
|-
| 0x5F || 0x1 || uint8_t || mu8Flags || Flags || Always 0?
|-
| 0x60 || 0x4 || void*[1] || maBuffers || Buffers || Index buffers, then vertex buffers, then vertex descriptors.<br />See [[#renderengine::IndexBuffer|IndexBuffer]] and [[#renderengine::VertexBuffer|VertexBuffer]]
|}
 
==== PC (Remastered) ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x40 || [[Matrix44Affine]] || ? || Bounding box ||
|-
| 0x40 || 0x10 || [[#DrawIndexedParameters|DrawIndexedParameters]] || mDrawIndexedParameters || ||
|-
| 0x50 || 0x4 || [[Material|MaterialAssembly]]* || mpMaterialAssembly || ||
|-
| 0x54 || 0x1 || uint8_t || mu8NumVertexDescriptors || Number of vertex descriptors ||
|-
| 0x55 || 0x1 || uint8_t || mu8InstanceCount || ||
|-
| 0x56 || 0x1 || uint8_t || mu8NumVertexBuffers || Number of vertex buffers ||
|-
| 0x57 || 0x1 || uint8_t || mu8Flags || Flags || Always 0?
|-
| 0x58 || 0x4 || void*[1] || maBuffers || Buffers || Index buffers, then vertex buffers, then vertex descriptors.<br />See [[#renderengine::IndexBuffer|IndexBuffer]] and [[#renderengine::VertexBuffer|VertexBuffer]]
|}
 
==== PlayStation 4, Switch ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x40 || [[Matrix44Affine]] || ? || Bounding box ||
|-
| 0x40 || 0x10 || [[#DrawIndexedParameters|DrawIndexedParameters]] || mDrawIndexedParameters || ||
|-
| 0x50 || 0x8 || [[Material|MaterialAssembly]]* || mpMaterialAssembly || ||
|-
| 0x58 || 0x1 || uint8_t || mu8NumVertexDescriptors || Number of vertex descriptors ||
|-
| 0x59 || 0x1 || uint8_t || mu8InstanceCount || ||
|-
| 0x5A || 0x1 || uint8_t || mu8NumVertexBuffers || Number of vertex buffers ||
|-
| 0x5B || 0x1 || uint8_t || mu8Flags || Flags || Always 0?
|-
| 0x5C || 0x4 || || || Padding ||
|-
| 0x60 || 0x8 || void*[1] || maBuffers || Buffers || Index buffers, then vertex buffers, then vertex descriptors.<br />See [[#renderengine::IndexBuffer|IndexBuffer]] and [[#renderengine::VertexBuffer|VertexBuffer]]
|}
 
=== PackedOobb ===
A packed oriented bounding box. It unpacks into a [[Matrix44]] through a set of vector operations.
 
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[VectorIntrinsic]] || mPackedBB || ||
|}
 
=== DrawIndexedParameters ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || m_startIndex || Start index ||
|-
| 0x4 || 0x4 || uint32_t || m_indexCount || Number of indices ||
|-
| 0x8 || 0x1 || uint8_t || m_primitiveType || Primitive type || See [[#Primitive type|primitive types]]
|-
| 0x9 || 0x3 || || || Padding ||
|}
 
==== Xbox 360 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || ? || Primitive type? || See [[#Primitive type|primitive types]]
|-
| 0x4 || 0x4 || int32_t || ? || Base vertex index ||
|-
| 0x8 || 0x4 || uint32_t || ? || Start index ||
|-
| 0xC || 0x4 || uint32_t || ? || Number of indices ||
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || [[#D3DPRIMITIVETYPE|D3DPRIMITIVETYPE]] || ? || Primitive type ||
|-
| 0x4 || 0x4 || int32_t || ? || Base vertex index ||
|-
| 0x8 || 0x4 || uint32_t || ? || Start index ||
|-
| 0xC || 0x4 || uint32_t || ? || Number of indices ||
|-
| 0x10 || 0x4 || uint32_t || ? || Minimum index ||
|-
| 0x14 || 0x4 || uint32_t || ? || Number of primitives ||
|}
 
==== Remastered ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || [[#D3D11_PRIMITIVE_TOPOLOGY|D3D11_PRIMITIVE_TOPOLOGY]] || ? || Primitive topology ||
|-
| 0x4 || 0x4 || int32_t || ? || Base vertex index ||
|-
| 0x8 || 0x4 || uint32_t || ? || Start index ||
|-
| 0xC || 0x4 || uint32_t || ? || Number of indices ||
|}
 
=== renderengine::IndexBuffer ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || void* || m_buffer || Buffer data || In secondary resource portion
|-
| 0x4 || 0x4 || uint32_t || m_offset || Offset relative to data start ||
|-
| 0x8 || 0x4 || uint32_t || m_numIndices || Number of indices ||
|-
| 0xC || 0x4 || uint32_t || m_stride || Size of each index value || 2 or 4
|-
| 0x10 || 0x1 || uint8_t || m_indexType || || Always 1?
|-
| 0x11 || 0x1 || uint8_t || m_location || Memory location || See [[#Location|location]]
|-
| 0x12 || 0x1 || uint8_t || m_type || || Always 0?
|-
| 0x13 || 0x1 || uint8_t || m_lockFlags || || Always 0?
|}
 
==== Xbox 360 ====
{{todo|Largely unknown; requires further research. Some fields may be incorrect.}}
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || ? || D3D resource type || May have highest nibble as a flag<br />See [[#D3DRESOURCETYPE|D3DRESOURCETYPE]]
|-
| 0x4 || 0x4 || uint32_t || ? || || Always 1?
|-
| 0x8 || 0x4 || ? || ? || ||
|-
| 0xC || 0x4 || ? || ? || ||
|-
| 0x10 || 0x4 || ? || ? || ||
|-
| 0x14 || 0x2 || int16_t || ? || || Always -1?
|-
| 0x16 || 0x2 || || || Padding ||
|-
| 0x18 || 0x4 || uint32_t || ? || Start offset ||
|-
| 0x1C || 0x4 || uint32_t || ? || Buffer size || May have highest nibble as a flag
|-
| 0x20 || 0x4 || uint32_t || ? || Index count ||
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || ? || Number of indices ||
|-
| 0x4 || 0x4 || ? || ? || Indices ||
|-
| 0x8 || 0x4 || ? || ? || || Null in samples
|-
| 0xC || 0x4 || uint32_t || ? || || Flags?
|}
 
==== PC (Remastered) ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x14 || [[#Buffer|Buffer]] || ? || Buffer info ||
|-
| 0x4 || 0x4 || uint32_t || ? || Index size || 2 or 4 bytes
|}
 
==== PlayStation 4, Switch ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x1C || [[#Buffer|Buffer]] || ? || Buffer info ||
|-
| 0x4 || 0x4 || uint32_t || ? || Index size || 2 or 4 bytes
|}
 
=== renderengine::VertexBuffer ===
==== PlayStation 3 ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || void* || m_buffer || Buffer data || In secondary resource portion
|-
| 0x4 || 0x4 || uint32_t || m_offset || Offset relative to data start ||
|-
| 0x8 || 0x4 || uint32_t || m_bufferSize || Buffer size in bytes ||
|-
| 0xC || 0x1 || uint8_t || m_location || Memory location || See [[#Location|location]]
|-
| 0xD || 0x1 || uint8_t || m_lockFlags || || Always 0?
|-
| 0xE || 0x2 || uint16_t || m_pad0 || Padding ||
|}
 
==== Xbox 360 ====
{{todo|Largely unknown; requires further research. Some fields may be incorrect.}}
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || ? || D3D resource type || May have highest nibble as a flag<br />See [[#D3DRESOURCETYPE|D3DRESOURCETYPE]]
|-
| 0x4 || 0x4 || uint32_t || ? || || Always 1?
|-
| 0x8 || 0x4 || ? || ? || ||
|-
| 0xC || 0x4 || ? || ? || ||
|-
| 0x10 || 0x4 || ? || ? || ||
|-
| 0x14 || 0x2 || int16_t || ? || || Always -1?
|-
| 0x16 || 0x2 || || || Padding ||
|-
| 0x18 || 0x4 || uint32_t || ? || Start offset + 3 ||
|-
| 0x1C || 0x4 || uint32_t || ? || Buffer size + 2 || May have highest nibble as a flag
|-
| 0x20 || 0x4 || uint32_t || ? || Buffer size ||
|}
 
==== PC ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || ? || Vertices offset || In secondary resource portion
|-
| 0x4 || 0x4 || ? || ? || || Null in samples
|-
| 0x8 || 0x4 || uint32_t || ? || Buffer length ||
|-
| 0xC || 0x4 || || || Padding ||
|}
 
==== PC (Remastered) ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x14 || [[#Buffer|Buffer]] || ? || Buffer info ||
|-
| 0x4 || 0x4 || ? || ? || ||
|-
| 0x4 || 0x4 || ? || ? || ||
|}
 
==== PlayStation 4, Switch ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x1C || [[#Buffer|Buffer]] || ? || Buffer info ||
|-
| 0x4 || 0x4 || ? || ? || ||
|-
| 0x4 || 0x4 || ? || ? || ||
|}
 
=== Buffer ===
==== PC (Remastered) ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || ID3D11Buffer* || ? || Buffer Interface || Set at runtime<br />See the [https://learn.microsoft.com/en-us/windows/win32/api/d3d11/nn-d3d11-id3d11buffer Microsoft Learn page]
|-
| 0x4 || 0x4 || [[#D3D11_USAGE|D3D11_USAGE]] || ? || Usage || Always D3D11_USAGE_IMMUTABLE
|-
| 0x8 || 0x4 || int32_t || ? || Type || See [[#Buffer type|buffer type]]
|-
| 0xC || 0x4 || void* || ? || Data offset ||
|-
| 0x10 || 0x4 || uint32_t || ? || Data size ||
|}
 
==== PlayStation 4, Switch ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 || ID3D11Buffer* || ? || Buffer Interface || Set at runtime<br />See the [https://learn.microsoft.com/en-us/windows/win32/api/d3d11/nn-d3d11-id3d11buffer Microsoft Learn page]
|-
| 0x8 || 0x4 || [[#D3D11_USAGE|D3D11_USAGE]] || ? || Usage || hardcoded to D3D11_USAGE_IMMUTABLE
|-
| 0xC || 0x4 || int32_t || ? || Type || See [[#Buffer type|buffer type]]
|-
| 0x10 || 0x8 || void* || ? || Data offset ||
|-
| 0x18 || 0x4 || uint32_t || ? || Data size ||
|}
 
= Enumerations =
=== Renderable flags ===
{| class="wikitable"
! Name !! Value !! Comments
|-
| ? || 0x1 ||
|-
| ? || 0x2 ||
|-
| ? || 0x4 ||
|-
| ? || 0x8 ||
|-
| ? || 0x10 ||
|-
| ? || 0x20 ||
|-
| ? || 0x40 ||
|-
| ? || 0x80 ||
|-
| ? || 0x100 ||
|-
| ? || 0x200 ||
|-
| ? || 0x400 ||
|-
| ? || 0x800 ||
|}
 
=== Primitive type ===
Primitive macro values from CELL_GCM_METHOD_DATA_BEGIN_END in the SCE PS3 SDK.
{| class="wikitable"
! Name !! Value !! Comments
|-
| - || 0 || Indicates the end of a primitive
|-
| CELL_GCM_PRIMITIVE_POINTS || 1 || Starts a POINTS primitive
|-
| CELL_GCM_PRIMITIVE_LINE_STRIP || 2 || Starts a LINE_STRIP primitive
|-
| CELL_GCM_PRIMITIVE_LINE_LOOP || 3 || Starts a LINE_LOOP primitive
|-
| CELL_GCM_PRIMITIVE_LINES || 4 || Starts a LINES primitive
|-
| CELL_GCM_PRIMITIVE_TRIANGLES || 5 || Starts a TRIANGLES primitive
|-
| CELL_GCM_PRIMITIVE_TRIANGLE_STRIP || 6 || Starts a TRIANGLE_STRIP primitive
|-
| CELL_GCM_PRIMITIVE_TRIANGLE_FAN || 7 || Starts a TRIANGLE_FAN primitive
|-
| CELL_GCM_PRIMITIVE_QUADS || 8 || Starts a QUADS primitive
|-
| CELL_GCM_PRIMITIVE_QUAD_STRIP || 9 || Starts a QUAD_STRIP primitive
|-
| CELL_GCM_PRIMITIVE_POLYGON || 10 || Starts a POLYGON primitive
|}
 
=== D3DPRIMITIVETYPE ===
From the [https://learn.microsoft.com/en-us/windows/win32/direct3d9/d3dprimitivetype Microsoft Learn page].
 
{| class="wikitable"
! Name !! Value !! Comments
|-
| D3DPT_POINTLIST || 1 || Renders the vertices as a collection of isolated points. This value is unsupported for indexed primitives.
|-
| D3DPT_LINELIST || 2 || Renders the vertices as a list of isolated straight line segments.
|-
| D3DPT_LINESTRIP || 3 || Renders the vertices as a single polyline.
|-
| D3DPT_TRIANGLELIST || 4 || Renders the specified vertices as a sequence of isolated triangles. Each group of three vertices defines a separate triangle.<br />Back-face culling is affected by the current winding-order render state.
|-
| D3DPT_TRIANGLESTRIP || 5 || Renders the vertices as a triangle strip. The backface-culling flag is automatically flipped on even-numbered triangles.
|-
| D3DPT_TRIANGLEFAN || 6 || Renders the vertices as a triangle fan.
|-
| D3DPT_FORCE_DWORD || 0x7FFFFFFF || Forces this enumeration to compile to 32 bits in size. Without this value, some compilers would allow this enumeration to compile to a size other than 32 bits. This value is not used.
|}
 
=== D3D11_PRIMITIVE_TOPOLOGY ===
From the [https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ff476189(v=vs.85) Microsoft Learn page].
 
{| class="wikitable"
! Name !! Value !! Comments
|-
| D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED || 0 || The IA stage has not been initialized with a primitive topology. The IA stage will not function properly unless a primitive topology is defined.
|-
| D3D11_PRIMITIVE_TOPOLOGY_POINTLIST || 1 || Interpret the vertex data as a list of points.
|-
| D3D11_PRIMITIVE_TOPOLOGY_LINELIST || 2 || Interpret the vertex data as a list of lines.
|-
| D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP || 3 || Interpret the vertex data as a line strip.
|-
| D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST || 4 || Interpret the vertex data as a list of triangles.
|-
| D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP || 5 || Interpret the vertex data as a triangle strip.
|-
| D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ || 10 || Interpret the vertex data as list of lines with adjacency data.
|-
| D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ || 11 || Interpret the vertex data as line strip with adjacency data.
|-
| D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ || 12 || Interpret the vertex data as list of triangles with adjacency data.
|-
| D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ || 13 || Interpret the vertex data as triangle strip with adjacency data.
|-
| D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST || 33 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST || 34 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST || 35 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST || 36 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST || 37 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST || 38 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST || 39 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST || 40 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST || 41 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST || 42 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST || 43 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST || 44 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST || 45 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST || 46 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST || 47 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST || 48 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST || 49 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST || 50 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST || 51 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST || 52 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST || 53 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST || 54 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST || 55 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST || 56 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST || 57 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST || 58 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST || 59 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST || 60 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST || 61 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST || 62 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST || 63 || Interpret the vertex data as a patch list.
|-
| D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST || 64 || Interpret the vertex data as a patch list.
|}
 
=== Location ===
{| class="wikitable"
! Name !! Value !! Comments
|-
| CELL_GCM_LOCATION_LOCAL + 1 || 1 || Local memory
|-
| CELL_GCM_LOCATION_MAIN + 1 || 2 || Main memory
|}
 
=== D3DRESOURCETYPE ===
From the Microsoft Xbox 360 SDK.
 
{| class="wikitable"
! Name !! Value !! Comments
|-
| D3DRTYPE_NONE || 0 || No resource is specified.
|-
| D3DRTYPE_VERTEXBUFFER || 1 || Vertex buffer resource.
|-
| D3DRTYPE_INDEXBUFFER || 2 || Index buffer resource.
|-
| D3DRTYPE_TEXTURE || 3 || Texture resource.
|-
| D3DRTYPE_SURFACE || 4 || Surface resource.
|-
| D3DRTYPE_VERTEXDECLARATION || 5 || Vertex declaration resource.
|-
| D3DRTYPE_VERTEXSHADER || 6 || Vertex shader resource.
|-
| D3DRTYPE_PIXELSHADER || 7 || Pixel shader resource.
|-
| D3DRTYPE_CONSTANTBUFFER || 8 || Constant buffer resource.
|-
| D3DRTYPE_COMMANDBUFFER || 9 || Command buffer resource.
|-
| D3DRTYPE_ASYNCCOMMANDBUFFERCALL || 10 || Aysnchronous command buffer call resource.
|-
| D3DRTYPE_PERFCOUNTERBATCH || 11 || Performance counter batch resource.
|-
| D3DRTYPE_OCCLUSIONQUERYBATCH || 12 || Occlusion query batch resource.
|-
| D3DRTYPE_VOLUME || 16 || Volume resource.
|-
| D3DRTYPE_VOLUMETEXTURE || 17 || Volume texture resource.
|-
| D3DRTYPE_CUBETEXTURE || 18 || Cube texture resource.
|-
| D3DRTYPE_ARRAYTEXTURE || 19 || Array texture resource.
|-
| D3DRTYPE_LINETEXTURE || 20 || Line texture resource.
|-
| D3DRTYPE_FORCE_DWORD || 0x7FFFFFFF || Forces this enumeration to compile to 32 bits in size. This value is not used.
|}
 
=== D3D11_USAGE ===
From the [https://learn.microsoft.com/en-us/windows/win32/api/d3d11/ne-d3d11-d3d11_usage Microsoft Learn page].
 
{| class="wikitable"
! Name !! Value !! Comments
|-
| D3D11_USAGE_DEFAULT || 0 || A resource that requires read and write access by the GPU. This is likely to be the most common usage choice.
|-
| D3D11_USAGE_IMMUTABLE || 1 || A resource that can only be read by the GPU. It cannot be written by the GPU, and cannot be accessed at all by the CPU. This type of resource must be initialized when it is created, since it cannot be changed after creation.
|-
| D3D11_USAGE_DYNAMIC || 2 || A resource that is accessible by both the GPU (read only) and the CPU (write only). A dynamic resource is a good choice for a resource that will be updated by the CPU at least once per frame. To update a dynamic resource, use a Map method.
|-
| D3D11_USAGE_STAGING || 3 || A resource that supports data transfer (copy) from the GPU to the CPU.
|}
 
=== Buffer type ===
{| class="wikitable"
! Name !! Value !! Comments
|-
| ? || 2 || Vertex buffer
|-
| ? || 3 || Index buffer
|-
| ? || 4 || Constant buffer
|}