Renderable: Difference between revisions

Add information for other platforms. Thanks to Matty for much of the PC and Remastered info.
(Added initial resource type information.)
(Add information for other platforms. Thanks to Matty for much of the PC and Remastered info.)
Line 1:
{{todo|Add platforms aside from PS3. They're researched, just need to be added.}}
 
{{ParadiseResourceTypeInfobox
| name = Renderable
Line 8 ⟶ 6:
| category = Generic
| memdist = Header in Main Memory<br />Buffers in [[Bundle 2/Burnout Paradise#Memory types|secondary]]
| imports = 1 [[Material]] per mesh<br />[[Vertex Descriptor]]
| importedby = [[Model]]
}}
 
The Renderable resource type is used for all model data in Burnout Paradise; that is, Renderables contain the data used by each [[Model]] resource.
 
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]].
Renderable resources import [[Material|materials]] and [[Vertex Descriptor|vertex descriptors]]. They are imported by [[Model|models]].
 
= Structures =
Line 32 ⟶ 30:
| 0x18 || 0x4 || ObjectScopeTextureInfo* || mpObjectScopeTextureInfo || || Set at runtime
|-
| 0x1C || 0x2 || uint16_t || mu16Flags || Flags || AlwaysSee 0xFF?[[#Renderable flags|flags]]
|}
 
==== PC, PC (Remastered) ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
Line 47 ⟶ 45:
| 0x14 || 0x4 || [[#RenderableMesh|RenderableMesh]]** || mppMeshes || Meshes ||
|-
| 0x18 || 0x4 || ObjectScopeTextureInfo* || mpObjectScopeTextureInfo || || Set at runtimeUnused
|-
| 0x1C || 0x2 || uint16_t || mu16Flags || Flags || AlwaysSee 0xFF?[[#Renderable flags|flags]]
|-
| 0x1E || 0x2 || || || Padding ||
|-
| 0x20 || 0x4 || uint32_t[[#renderengine::IndexBuffer|IndexBuffer]]* || ? || Number ofIndex indicesbuffer ||
|-
| 0x24 || 0x4 || [[#renderengine::VertexBuffer|VertexBuffer]]* || ? || VerticesVertex buffer || Relative to secondary resource portion
|}
 
==== 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 || || Set at runtime
|-
| 0x1C || 0x2 || uint16_t || mu16Flags || Flags || Always 0xFF?
|-
| 0x1E || 0x2 || || || Padding ||
|-
| 0x20 || 0x4 || [[#renderengine::IndexBuffer|IndexBuffer]]* || ? || Index buffer || Relative to secondary resource portion
|-
| 0x24 || 0x4 || [[#renderengine::VertexBuffer|VertexBuffer]]* || ? || Vertex buffer || Relative to secondary resource portion
|}
 
Line 95 ⟶ 70:
| 0x18 || 0x8 || [[#RenderableMesh|RenderableMesh]]** || mppMeshes || Meshes ||
|-
| 0x20 || 0x8 || ObjectScopeTextureInfo* || mpObjectScopeTextureInfo || || Set at runtimeUnused
|-
| 0x28 || 0x2 || uint16_t || mu16Flags || Flags || AlwaysSee 0xFF?[[#Renderable flags|flags]]
|-
| 0x2A || 0x6 || || || Padding ||
|-
| 0x30 || 0x8 || [[#renderengine::IndexBuffer|IndexBuffer]]* || ? || Index buffer || Relative to secondary resource portion
|-
| 0x38 || 0x8 || [[#renderengine::VertexBuffer|VertexBuffer]]* || ? || Vertex buffer || Relative to secondary resource portion
|}
 
Line 125 ⟶ 100:
| 0x23 || 0x1 || uint8_t || mu8Flags || Flags || Always 0?
|-
| 0x24 || 0x4 || void*[1] || maBuffers || Buffers || Usually indexIndex buffers, then vertex buffers, then vertex descriptors.<br />See [[#renderengine::IndexBuffer|IndexBuffer]] and [[#renderengine::VertexBuffer|VertexBuffer]]
|}
 
Line 146 ⟶ 121:
| 0x27 || 0x1 || uint8_t || mu8Flags || Flags || Always 0?
|-
| 0x28 || 0x4 || void*[1] || maBuffers || Buffers || Usually indexIndex 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]]
|}
 
Line 171 ⟶ 211:
 
==== Xbox 360 ====
Probably not the same structure, needs to be researched and renamed at some point.
 
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
Line 178 ⟶ 216:
| 0x0 || 0x4 || uint32_t || ? || Primitive type? || See [[#Primitive type|primitive types]]
|-
| 0x4 || 0x4 || ?int32_t || ? || Base vertex index || Unset pointer?
|-
| 0x8 || 0x4 || uint32_t || m_startIndex? || Start index ||
|-
| 0xC || 0x4 || uint32_t || m_indexCount? || 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 ||
|}
 
Line 190 ⟶ 258:
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || void* || m_buffer || Buffer data || Relative toIn secondary resource portion
|-
| 0x4 || 0x4 || uint32_t || m_offset || Offset relative to data start ||
Line 205 ⟶ 273:
|-
| 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
|}
 
Line 212 ⟶ 337:
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || void* || m_buffer || Buffer data || Relative toIn secondary resource portion<br />See [[#Vertex data|vertex data]]
|-
| 0x4 || 0x4 || uint32_t || m_offset || Offset relative to data start ||
Line 225 ⟶ 350:
|}
 
==== VertexXbox data360 ====
{{todo|Largely unknown; requires further research. Some fields may be incorrect.}}
A single entry in the vertex data. Entirely guesswork.
{| 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 || 0xC0x4 || [[Vector3]]uint32_t || ? || Vertices offset || In secondary resource portion
|-
| 0xC0x4 || 0x4 || uint32_t? || ? || || Null in samples
|-
| 0x100x8 || 0x4 || uint32_t || ? || Buffer length ||
|-
| 0x140xC || 0x80x4 || [[Vector2]] || ? || Padding ||
|}
 
==== PC (Remastered) ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x1C0x0 || 0x40x14 || uint32_t[[#Buffer|Buffer]] || ? || Buffer info ||
|-
| 0x200x4 || 0x4 || uint32_t? || ? || ||
|-
| 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 ||
|}
 
=== Vertex data ===
{{todo|PS3/X360 vertex data is strange. 3 floats, then unknown data of varying length. On PC, it's all floats.}}
 
= 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.
Line 271 ⟶ 501:
|-
| 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.
|}
 
Line 280 ⟶ 622:
|-
| 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
|}