From a73c12db8f502022d292cc6fb8872482997b0664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Sun, 8 Mar 2026 23:13:51 -0700 Subject: [PATCH] Added bgfx::AttribType::Int8/Uint16. (#3626) --- bindings/bf/bgfx.bf | 10 +++++++ bindings/c3/bgfx.c3 | 6 ++++ bindings/cs/bgfx.cs | 10 +++++++ bindings/d/impl.d | 2 +- bindings/d/package.d | 4 ++- bindings/zig/bgfx.zig | 6 ++++ include/bgfx/bgfx.h | 2 ++ include/bgfx/c99/bgfx.h | 12 ++++---- include/bgfx/defines.h | 2 +- scripts/bgfx.idl | 4 ++- src/renderer_d3d11.cpp | 12 ++++++++ src/renderer_d3d12.cpp | 12 ++++++++ src/renderer_gl.cpp | 2 ++ src/renderer_mtl.cpp | 66 +++++++++++++++++++++-------------------- src/renderer_vk.cpp | 12 ++++++++ src/renderer_webgpu.cpp | 12 ++++++++ src/vertexlayout.cpp | 10 ++++++- 17 files changed, 142 insertions(+), 42 deletions(-) diff --git a/bindings/bf/bgfx.bf b/bindings/bf/bgfx.bf index 1f5058f33..a09df1310 100644 --- a/bindings/bf/bgfx.bf +++ b/bindings/bf/bgfx.bf @@ -1591,6 +1591,11 @@ public static class bgfx [AllowDuplicates] public enum AttribType : uint32 { + /// + /// Int8 + /// + Int8, + /// /// Uint8 /// @@ -1606,6 +1611,11 @@ public static class bgfx /// Int16, + /// + /// Uint16 + /// + Uint16, + /// /// Half, availability depends on: `BGFX_CAPS_VERTEX_ATTRIB_HALF`. /// diff --git a/bindings/c3/bgfx.c3 b/bindings/c3/bgfx.c3 index 0427021fa..027b10b95 100644 --- a/bindings/c3/bgfx.c3 +++ b/bindings/c3/bgfx.c3 @@ -1004,6 +1004,9 @@ enum Attrib : uint enum AttribType : uint { + // Int8 + INT8, + // Uint8 UINT8, @@ -1013,6 +1016,9 @@ enum AttribType : uint // Int16 INT16, + // Uint16 + UINT16, + // Half, availability depends on: `BGFX_CAPS_VERTEX_ATTRIB_HALF`. HALF, diff --git a/bindings/cs/bgfx.cs b/bindings/cs/bgfx.cs index 01d6e644e..3e47c758d 100644 --- a/bindings/cs/bgfx.cs +++ b/bindings/cs/bgfx.cs @@ -1585,6 +1585,11 @@ public static partial class bgfx public enum AttribType { + /// + /// Int8 + /// + Int8, + /// /// Uint8 /// @@ -1600,6 +1605,11 @@ public static partial class bgfx /// Int16, + /// + /// Uint16 + /// + Uint16, + /// /// Half, availability depends on: `BGFX_CAPS_VERTEX_ATTRIB_HALF`. /// diff --git a/bindings/d/impl.d b/bindings/d/impl.d index 9648e19e1..46f7f3046 100644 --- a/bindings/d/impl.d +++ b/bindings/d/impl.d @@ -41,7 +41,7 @@ extern(C++, "bgfx") package final abstract class Attrib{ } extern(C++, "bgfx") package final abstract class AttribType{ enum Enum{ - uint8,uint10,int16,half,float_,count + int8,uint8,uint10,int16,uint16,half,float_,count } } extern(C++, "bgfx") package final abstract class TextureFormat{ diff --git a/bindings/d/package.d b/bindings/d/package.d index baaab9eb7..2fed46cb6 100644 --- a/bindings/d/package.d +++ b/bindings/d/package.d @@ -9,7 +9,7 @@ import bindbc.common.types: c_int64, c_uint64, va_list; import bindbc.bgfx.config; static import bgfx.impl; -enum uint apiVersion = 141; +enum uint apiVersion = 142; alias ViewID = ushort; @@ -652,9 +652,11 @@ enum Attrib: bgfx.impl.Attrib.Enum{ ///Vertex attribute type enum. enum AttribType: bgfx.impl.AttribType.Enum{ + int8 = bgfx.impl.AttribType.Enum.int8, uint8 = bgfx.impl.AttribType.Enum.uint8, uint10 = bgfx.impl.AttribType.Enum.uint10, int16 = bgfx.impl.AttribType.Enum.int16, + uint16 = bgfx.impl.AttribType.Enum.uint16, half = bgfx.impl.AttribType.Enum.half, float_ = bgfx.impl.AttribType.Enum.float_, count = bgfx.impl.AttribType.Enum.count, diff --git a/bindings/zig/bgfx.zig b/bindings/zig/bgfx.zig index 26f46825a..675d1a9fc 100644 --- a/bindings/zig/bgfx.zig +++ b/bindings/zig/bgfx.zig @@ -970,6 +970,9 @@ pub const Attrib = enum(c_int) { }; pub const AttribType = enum(c_int) { + /// Int8 + Int8, + /// Uint8 Uint8, @@ -979,6 +982,9 @@ pub const AttribType = enum(c_int) { /// Int16 Int16, + /// Uint16 + Uint16, + /// Half, availability depends on: `BGFX_CAPS_VERTEX_ATTRIB_HALF`. Half, diff --git a/include/bgfx/bgfx.h b/include/bgfx/bgfx.h index 1113d160d..fe8f6f6fc 100644 --- a/include/bgfx/bgfx.h +++ b/include/bgfx/bgfx.h @@ -135,9 +135,11 @@ namespace bgfx /// Attribute types: enum Enum { + Int8, //!< Int8 Uint8, //!< Uint8 Uint10, //!< Uint10, availability depends on: `BGFX_CAPS_VERTEX_ATTRIB_UINT10`. Int16, //!< Int16 + Uint16, //!< Uint16 Half, //!< Half, availability depends on: `BGFX_CAPS_VERTEX_ATTRIB_HALF`. Float, //!< Float diff --git a/include/bgfx/c99/bgfx.h b/include/bgfx/c99/bgfx.h index 984aea93a..0b75b1f8f 100644 --- a/include/bgfx/c99/bgfx.h +++ b/include/bgfx/c99/bgfx.h @@ -145,11 +145,13 @@ typedef enum bgfx_attrib */ typedef enum bgfx_attrib_type { - BGFX_ATTRIB_TYPE_UINT8, /** ( 0) Uint8 */ - BGFX_ATTRIB_TYPE_UINT10, /** ( 1) Uint10, availability depends on: `BGFX_CAPS_VERTEX_ATTRIB_UINT10`. */ - BGFX_ATTRIB_TYPE_INT16, /** ( 2) Int16 */ - BGFX_ATTRIB_TYPE_HALF, /** ( 3) Half, availability depends on: `BGFX_CAPS_VERTEX_ATTRIB_HALF`. */ - BGFX_ATTRIB_TYPE_FLOAT, /** ( 4) Float */ + BGFX_ATTRIB_TYPE_INT8, /** ( 0) Int8 */ + BGFX_ATTRIB_TYPE_UINT8, /** ( 1) Uint8 */ + BGFX_ATTRIB_TYPE_UINT10, /** ( 2) Uint10, availability depends on: `BGFX_CAPS_VERTEX_ATTRIB_UINT10`. */ + BGFX_ATTRIB_TYPE_INT16, /** ( 3) Int16 */ + BGFX_ATTRIB_TYPE_UINT16, /** ( 4) Uint16 */ + BGFX_ATTRIB_TYPE_HALF, /** ( 5) Half, availability depends on: `BGFX_CAPS_VERTEX_ATTRIB_HALF`. */ + BGFX_ATTRIB_TYPE_FLOAT, /** ( 6) Float */ BGFX_ATTRIB_TYPE_COUNT diff --git a/include/bgfx/defines.h b/include/bgfx/defines.h index e7215fb30..a6997c125 100644 --- a/include/bgfx/defines.h +++ b/include/bgfx/defines.h @@ -15,7 +15,7 @@ #ifndef BGFX_DEFINES_H_HEADER_GUARD #define BGFX_DEFINES_H_HEADER_GUARD -#define BGFX_API_VERSION UINT32_C(141) +#define BGFX_API_VERSION UINT32_C(142) /** * Color RGB/alpha/depth write. When it's not specified write will be disabled. diff --git a/scripts/bgfx.idl b/scripts/bgfx.idl index 071f33185..d2c3ef7b7 100644 --- a/scripts/bgfx.idl +++ b/scripts/bgfx.idl @@ -1,7 +1,7 @@ -- vim: syntax=lua -- bgfx interface -version(141) +version(142) typedef "bool" typedef "char" @@ -513,9 +513,11 @@ enum.Attrib { comment = "Corresponds to vertex shader attribute.", section = "Ve --- Vertex attribute type enum. enum.AttribType { comment = "Attribute types:", section = "Vertex Buffers" } + .Int8 --- Int8 .Uint8 --- Uint8 .Uint10 --- Uint10, availability depends on: `BGFX_CAPS_VERTEX_ATTRIB_UINT10`. .Int16 --- Int16 + .Uint16 --- Uint16 .Half --- Half, availability depends on: `BGFX_CAPS_VERTEX_ATTRIB_HALF`. .Float --- Float () diff --git a/src/renderer_d3d11.cpp b/src/renderer_d3d11.cpp index b2c1833f1..bc3cf262e 100644 --- a/src/renderer_d3d11.cpp +++ b/src/renderer_d3d11.cpp @@ -331,6 +331,12 @@ namespace bgfx { namespace d3d11 static const DXGI_FORMAT s_attribType[][4][2] = { + { // Int8 + { DXGI_FORMAT_R8_SINT, DXGI_FORMAT_R8_SNORM }, + { DXGI_FORMAT_R8G8_SINT, DXGI_FORMAT_R8G8_SNORM }, + { DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_SNORM }, + { DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_SNORM }, + }, { // Uint8 { DXGI_FORMAT_R8_UINT, DXGI_FORMAT_R8_UNORM }, { DXGI_FORMAT_R8G8_UINT, DXGI_FORMAT_R8G8_UNORM }, @@ -349,6 +355,12 @@ namespace bgfx { namespace d3d11 { DXGI_FORMAT_R16G16B16A16_SINT, DXGI_FORMAT_R16G16B16A16_SNORM }, { DXGI_FORMAT_R16G16B16A16_SINT, DXGI_FORMAT_R16G16B16A16_SNORM }, }, + { // Uint16 + { DXGI_FORMAT_R16_UINT, DXGI_FORMAT_R16_UNORM }, + { DXGI_FORMAT_R16G16_UINT, DXGI_FORMAT_R16G16_UNORM }, + { DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_UNORM }, + { DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_UNORM }, + }, { // Half { DXGI_FORMAT_R16_FLOAT, DXGI_FORMAT_R16_FLOAT }, { DXGI_FORMAT_R16G16_FLOAT, DXGI_FORMAT_R16G16_FLOAT }, diff --git a/src/renderer_d3d12.cpp b/src/renderer_d3d12.cpp index d62f0d25a..68d01c567 100644 --- a/src/renderer_d3d12.cpp +++ b/src/renderer_d3d12.cpp @@ -339,6 +339,12 @@ namespace bgfx { namespace d3d12 static const DXGI_FORMAT s_attribType[][4][2] = { + { // Int8 + { DXGI_FORMAT_R8_SINT, DXGI_FORMAT_R8_SNORM }, + { DXGI_FORMAT_R8G8_SINT, DXGI_FORMAT_R8G8_SNORM }, + { DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_SNORM }, + { DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_SNORM }, + }, { // Uint8 { DXGI_FORMAT_R8_UINT, DXGI_FORMAT_R8_UNORM }, { DXGI_FORMAT_R8G8_UINT, DXGI_FORMAT_R8G8_UNORM }, @@ -357,6 +363,12 @@ namespace bgfx { namespace d3d12 { DXGI_FORMAT_R16G16B16A16_SINT, DXGI_FORMAT_R16G16B16A16_SNORM }, { DXGI_FORMAT_R16G16B16A16_SINT, DXGI_FORMAT_R16G16B16A16_SNORM }, }, + { // Uint16 + { DXGI_FORMAT_R16_UINT, DXGI_FORMAT_R16_UNORM }, + { DXGI_FORMAT_R16G16_UINT, DXGI_FORMAT_R16G16_UNORM }, + { DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_UNORM }, + { DXGI_FORMAT_R16G16B16A16_UINT, DXGI_FORMAT_R16G16B16A16_UNORM }, + }, { // Half { DXGI_FORMAT_R16_FLOAT, DXGI_FORMAT_R16_FLOAT }, { DXGI_FORMAT_R16G16_FLOAT, DXGI_FORMAT_R16G16_FLOAT }, diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index 0a7664dff..d0b6dd9db 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -85,9 +85,11 @@ namespace bgfx { namespace gl static const GLenum s_attribType[] = { + GL_BYTE, // Int8 GL_UNSIGNED_BYTE, // Uint8 GL_UNSIGNED_INT_10_10_10_2, // Uint10 GL_SHORT, // Int16 + GL_UNSIGNED_SHORT, // Uint16 GL_HALF_FLOAT, // Half GL_FLOAT, // Float }; diff --git a/src/renderer_mtl.cpp b/src/renderer_mtl.cpp index 62b193879..c0ca0fbea 100644 --- a/src/renderer_mtl.cpp +++ b/src/renderer_mtl.cpp @@ -86,46 +86,48 @@ namespace bgfx { namespace mtl static_assert(BGFX_CONFIG_MAX_INSTANCE_DATA_COUNT == BX_COUNTOF(s_instanceDataName) ); static const MTL::VertexFormat s_attribType[][4][2] = //type, count, normalized - { - // Uint8 - { - { MTL::VertexFormatUChar2, MTL::VertexFormatUChar2Normalized }, - { MTL::VertexFormatUChar2, MTL::VertexFormatUChar2Normalized }, - { MTL::VertexFormatUChar3, MTL::VertexFormatUChar3Normalized }, - { MTL::VertexFormatUChar4, MTL::VertexFormatUChar4Normalized }, + { + { // Uint8 + { MTL::VertexFormatChar2, MTL::VertexFormatChar2Normalized }, + { MTL::VertexFormatChar2, MTL::VertexFormatChar2Normalized }, + { MTL::VertexFormatChar3, MTL::VertexFormatChar3Normalized }, + { MTL::VertexFormatChar4, MTL::VertexFormatChar4Normalized }, }, - - // Uint10 - // Note: unnormalized is handled as normalized now - { + { // Uint8 + { MTL::VertexFormatUChar2, MTL::VertexFormatUChar2Normalized }, + { MTL::VertexFormatUChar2, MTL::VertexFormatUChar2Normalized }, + { MTL::VertexFormatUChar3, MTL::VertexFormatUChar3Normalized }, + { MTL::VertexFormatUChar4, MTL::VertexFormatUChar4Normalized }, + }, + { // Uint10 { MTL::VertexFormatUInt1010102Normalized, MTL::VertexFormatUInt1010102Normalized }, { MTL::VertexFormatUInt1010102Normalized, MTL::VertexFormatUInt1010102Normalized }, { MTL::VertexFormatUInt1010102Normalized, MTL::VertexFormatUInt1010102Normalized }, { MTL::VertexFormatUInt1010102Normalized, MTL::VertexFormatUInt1010102Normalized }, }, - - // Int16 - { - { MTL::VertexFormatShort2, MTL::VertexFormatShort2Normalized }, - { MTL::VertexFormatShort2, MTL::VertexFormatShort2Normalized }, - { MTL::VertexFormatShort3, MTL::VertexFormatShort3Normalized }, - { MTL::VertexFormatShort4, MTL::VertexFormatShort4Normalized }, + { // Int16 + { MTL::VertexFormatShort2, MTL::VertexFormatShort2Normalized }, + { MTL::VertexFormatShort2, MTL::VertexFormatShort2Normalized }, + { MTL::VertexFormatShort3, MTL::VertexFormatShort3Normalized }, + { MTL::VertexFormatShort4, MTL::VertexFormatShort4Normalized }, }, - - // Half - { - { MTL::VertexFormatHalf2, MTL::VertexFormatHalf2 }, - { MTL::VertexFormatHalf2, MTL::VertexFormatHalf2 }, - { MTL::VertexFormatHalf3, MTL::VertexFormatHalf3 }, - { MTL::VertexFormatHalf4, MTL::VertexFormatHalf4 }, + { // Int16 + { MTL::VertexFormatUShort2, MTL::VertexFormatUShort2Normalized }, + { MTL::VertexFormatUShort2, MTL::VertexFormatUShort2Normalized }, + { MTL::VertexFormatUShort3, MTL::VertexFormatUShort3Normalized }, + { MTL::VertexFormatUShort4, MTL::VertexFormatUShort4Normalized }, }, - - // Float - { - { MTL::VertexFormatFloat, MTL::VertexFormatFloat }, - { MTL::VertexFormatFloat2, MTL::VertexFormatFloat2 }, - { MTL::VertexFormatFloat3, MTL::VertexFormatFloat3 }, - { MTL::VertexFormatFloat4, MTL::VertexFormatFloat4 }, + { // Half + { MTL::VertexFormatHalf2, MTL::VertexFormatHalf2 }, + { MTL::VertexFormatHalf2, MTL::VertexFormatHalf2 }, + { MTL::VertexFormatHalf3, MTL::VertexFormatHalf3 }, + { MTL::VertexFormatHalf4, MTL::VertexFormatHalf4 }, + }, + { // Float + { MTL::VertexFormatFloat, MTL::VertexFormatFloat }, + { MTL::VertexFormatFloat2, MTL::VertexFormatFloat2 }, + { MTL::VertexFormatFloat3, MTL::VertexFormatFloat3 }, + { MTL::VertexFormatFloat4, MTL::VertexFormatFloat4 }, }, }; static_assert(AttribType::Count == BX_COUNTOF(s_attribType) ); diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index 9f6729b35..599aca07f 100644 --- a/src/renderer_vk.cpp +++ b/src/renderer_vk.cpp @@ -475,6 +475,12 @@ VK_IMPORT_DEVICE static const VkFormat s_attribType[][4][2] = { + { // Int8 + { VK_FORMAT_R8_SINT, VK_FORMAT_R8_SNORM }, + { VK_FORMAT_R8G8_SINT, VK_FORMAT_R8G8_SNORM }, + { VK_FORMAT_R8G8B8A8_SINT, VK_FORMAT_R8G8B8A8_SNORM }, + { VK_FORMAT_R8G8B8A8_SINT, VK_FORMAT_R8G8B8A8_SNORM }, + }, { // Uint8 { VK_FORMAT_R8_UINT, VK_FORMAT_R8_UNORM }, { VK_FORMAT_R8G8_UINT, VK_FORMAT_R8G8_UNORM }, @@ -493,6 +499,12 @@ VK_IMPORT_DEVICE { VK_FORMAT_R16G16B16_SINT, VK_FORMAT_R16G16B16_SNORM }, { VK_FORMAT_R16G16B16A16_SINT, VK_FORMAT_R16G16B16A16_SNORM }, }, + { // Uint16 + { VK_FORMAT_R16_UINT, VK_FORMAT_R16_UNORM }, + { VK_FORMAT_R16G16_UINT, VK_FORMAT_R16G16_UNORM }, + { VK_FORMAT_R16G16B16_UINT, VK_FORMAT_R16G16B16_UNORM }, + { VK_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_UNORM }, + }, { // Half { VK_FORMAT_R16_SFLOAT, VK_FORMAT_R16_SFLOAT }, { VK_FORMAT_R16G16_SFLOAT, VK_FORMAT_R16G16_SFLOAT }, diff --git a/src/renderer_webgpu.cpp b/src/renderer_webgpu.cpp index a1df05e58..87ec0ded5 100644 --- a/src/renderer_webgpu.cpp +++ b/src/renderer_webgpu.cpp @@ -56,6 +56,12 @@ namespace bgfx { namespace wgpu static const WGPUVertexFormat s_attribType[][4][2] = { + { // Int8 + { WGPUVertexFormat_Sint8, WGPUVertexFormat_Snorm8 }, + { WGPUVertexFormat_Sint8x2, WGPUVertexFormat_Snorm8x2 }, + { WGPUVertexFormat_Sint8x4, WGPUVertexFormat_Snorm8x4 }, + { WGPUVertexFormat_Sint8x4, WGPUVertexFormat_Snorm8x4 }, + }, { // Uint8 { WGPUVertexFormat_Uint8, WGPUVertexFormat_Unorm8 }, { WGPUVertexFormat_Uint8x2, WGPUVertexFormat_Unorm8x2 }, @@ -74,6 +80,12 @@ namespace bgfx { namespace wgpu { WGPUVertexFormat_Sint16x4, WGPUVertexFormat_Snorm16x4 }, { WGPUVertexFormat_Sint16x4, WGPUVertexFormat_Snorm16x4 }, }, + { // Uint16 + { WGPUVertexFormat_Uint16, WGPUVertexFormat_Unorm16 }, + { WGPUVertexFormat_Uint16x2, WGPUVertexFormat_Unorm16x2 }, + { WGPUVertexFormat_Uint16x4, WGPUVertexFormat_Unorm16x4 }, + { WGPUVertexFormat_Uint16x4, WGPUVertexFormat_Unorm16x4 }, + }, { // Half { WGPUVertexFormat_Float16, WGPUVertexFormat_Float16 }, { WGPUVertexFormat_Float16x2, WGPUVertexFormat_Float16x2 }, diff --git a/src/vertexlayout.cpp b/src/vertexlayout.cpp index 7553d02d4..5073f25be 100644 --- a/src/vertexlayout.cpp +++ b/src/vertexlayout.cpp @@ -16,18 +16,22 @@ namespace bgfx { static const uint8_t s_attribTypeSizeD3D1x[AttribType::Count][4] = { + { 1, 2, 4, 4 }, // Int8 { 1, 2, 4, 4 }, // Uint8 { 4, 4, 4, 4 }, // Uint10 { 2, 4, 8, 8 }, // Int16 + { 2, 4, 8, 8 }, // Uint16 { 2, 4, 8, 8 }, // Half { 4, 8, 12, 16 }, // Float }; static const uint8_t s_attribTypeSizeGl[AttribType::Count][4] = { + { 1, 2, 4, 4 }, // Int8 { 1, 2, 4, 4 }, // Uint8 { 4, 4, 4, 4 }, // Uint10 { 2, 4, 6, 8 }, // Int16 + { 2, 4, 6, 8 }, // Uint16 { 2, 4, 6, 8 }, // Half { 4, 8, 12, 16 }, // Float }; @@ -87,7 +91,7 @@ namespace bgfx const uint16_t encodedNorm = (_normalized&1)<<7; const uint16_t encodedType = (_type&7)<<3; const uint16_t encodedNum = (_num-1)&3; - const uint16_t encodeAsInt = (_asInt&(!!"\x1\x1\x1\x0\x0"[_type]) )<<8; + const uint16_t encodeAsInt = (_asInt&(!!"\x1\x1\x1\x1\x1\x0\x0"[_type]) )<<8; m_attributes[_attrib] = encodedNorm|encodedType|encodedNum|encodeAsInt; m_offset[_attrib] = m_stride; @@ -114,9 +118,11 @@ namespace bgfx static const bool s_attribTypeIsFloat[] = { + false, // Int8 false, // Uint8 false, // Uint10 false, // Int16 + false, // Uint16 true, // Half true, // Float }; @@ -222,9 +228,11 @@ namespace bgfx // AttribType must be in order how it appears in AttribType::Enum! // id is unique and should not be changed if new AttribTypes are // added. + { AttribType::Int8, 0x0006 }, { AttribType::Uint8, 0x0001 }, { AttribType::Uint10, 0x0005 }, { AttribType::Int16, 0x0002 }, + { AttribType::Uint8, 0x0007 }, { AttribType::Half, 0x0003 }, { AttribType::Float, 0x0004 }, };