Skip to content

Commit 9f77a87

Browse files
author
GH Action
committed
1 parent a773d41 commit 9f77a87

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/sokol/c/sokol_gfx.h

+19-2
Original file line numberDiff line numberDiff line change
@@ -643,9 +643,11 @@
643643
- SG_VERTEXFORMAT_SHORT2
644644
- SG_VERTEXFORMAT_SHORT4
645645

646-
- WebGL/GLES2 cannot use integer vertex shader inputs (int or ivecn)
646+
- WebGL/GLES2 cannot use integer vertex shader inputs (int or ivecn) or the following:
647647

648-
- SG_VERTEXFORMAT_UINT10_N2 is not supported on WebGL/GLES2
648+
- SG_VERTEXFORMAT_UINT10_N2
649+
- SG_VERTEXFORMAT_HALF2, SG_VERTEXFORMAT_HALF4
650+
(commonly supported extension: OES_vertex_half_float)
649651

650652
So for a vertex input layout which works on all platforms, only use the following
651653
vertex formats, and if needed "expand" the normalized vertex shader
@@ -1535,6 +1537,8 @@ typedef enum sg_vertex_format {
15351537
SG_VERTEXFORMAT_SHORT4N,
15361538
SG_VERTEXFORMAT_USHORT4N,
15371539
SG_VERTEXFORMAT_UINT10_N2,
1540+
SG_VERTEXFORMAT_HALF2,
1541+
SG_VERTEXFORMAT_HALF4,
15381542
_SG_VERTEXFORMAT_NUM,
15391543
_SG_VERTEXFORMAT_FORCE_U32 = 0x7FFFFFFF
15401544
} sg_vertex_format;
@@ -4654,6 +4658,8 @@ _SOKOL_PRIVATE int _sg_vertexformat_bytesize(sg_vertex_format fmt) {
46544658
case SG_VERTEXFORMAT_SHORT4N: return 8;
46554659
case SG_VERTEXFORMAT_USHORT4N: return 8;
46564660
case SG_VERTEXFORMAT_UINT10_N2: return 4;
4661+
case SG_VERTEXFORMAT_HALF2: return 4;
4662+
case SG_VERTEXFORMAT_HALF4: return 8;
46574663
case SG_VERTEXFORMAT_INVALID: return 0;
46584664
default:
46594665
SOKOL_UNREACHABLE;
@@ -5502,6 +5508,8 @@ _SOKOL_PRIVATE GLint _sg_gl_vertexformat_size(sg_vertex_format fmt) {
55025508
case SG_VERTEXFORMAT_SHORT4N: return 4;
55035509
case SG_VERTEXFORMAT_USHORT4N: return 4;
55045510
case SG_VERTEXFORMAT_UINT10_N2: return 4;
5511+
case SG_VERTEXFORMAT_HALF2: return 2;
5512+
case SG_VERTEXFORMAT_HALF4: return 4;
55055513
default: SOKOL_UNREACHABLE; return 0;
55065514
}
55075515
}
@@ -5529,6 +5537,9 @@ _SOKOL_PRIVATE GLenum _sg_gl_vertexformat_type(sg_vertex_format fmt) {
55295537
return GL_UNSIGNED_SHORT;
55305538
case SG_VERTEXFORMAT_UINT10_N2:
55315539
return GL_UNSIGNED_INT_2_10_10_10_REV;
5540+
case SG_VERTEXFORMAT_HALF2:
5541+
case SG_VERTEXFORMAT_HALF4:
5542+
return GL_HALF_FLOAT;
55325543
default:
55335544
SOKOL_UNREACHABLE; return 0;
55345545
}
@@ -8708,6 +8719,8 @@ _SOKOL_PRIVATE DXGI_FORMAT _sg_d3d11_vertex_format(sg_vertex_format fmt) {
87088719
case SG_VERTEXFORMAT_SHORT4N: return DXGI_FORMAT_R16G16B16A16_SNORM;
87098720
case SG_VERTEXFORMAT_USHORT4N: return DXGI_FORMAT_R16G16B16A16_UNORM;
87108721
case SG_VERTEXFORMAT_UINT10_N2: return DXGI_FORMAT_R10G10B10A2_UNORM;
8722+
case SG_VERTEXFORMAT_HALF2: return DXGI_FORMAT_R16G16_FLOAT;
8723+
case SG_VERTEXFORMAT_HALF4: return DXGI_FORMAT_R16G16B16A16_FLOAT;
87118724
default: SOKOL_UNREACHABLE; return (DXGI_FORMAT) 0;
87128725
}
87138726
}
@@ -10104,6 +10117,8 @@ _SOKOL_PRIVATE MTLVertexFormat _sg_mtl_vertex_format(sg_vertex_format fmt) {
1010410117
case SG_VERTEXFORMAT_SHORT4N: return MTLVertexFormatShort4Normalized;
1010510118
case SG_VERTEXFORMAT_USHORT4N: return MTLVertexFormatUShort4Normalized;
1010610119
case SG_VERTEXFORMAT_UINT10_N2: return MTLVertexFormatUInt1010102Normalized;
10120+
case SG_VERTEXFORMAT_HALF2: return MTLVertexFormatHalf2;
10121+
case SG_VERTEXFORMAT_HALF4: return MTLVertexFormatHalf4;
1010710122
default: SOKOL_UNREACHABLE; return (MTLVertexFormat)0;
1010810123
}
1010910124
}
@@ -11900,6 +11915,8 @@ _SOKOL_PRIVATE WGPUVertexFormat _sg_wgpu_vertexformat(sg_vertex_format f) {
1190011915
case SG_VERTEXFORMAT_SHORT4: return WGPUVertexFormat_Short4;
1190111916
case SG_VERTEXFORMAT_SHORT4N: return WGPUVertexFormat_Short4Norm;
1190211917
case SG_VERTEXFORMAT_USHORT4N: return WGPUVertexFormat_UShort4Norm;
11918+
case SG_VERTEXFORMAT_HALF2: return WGPUVertexFormat_Half2;
11919+
case SG_VERTEXFORMAT_HALF3: return WGPUVertexFormat_Half4;
1190311920
/* FIXME! UINT10_N2 */
1190411921
case SG_VERTEXFORMAT_UINT10_N2:
1190511922
default:

src/sokol/gfx.zig

+2
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,8 @@ pub const VertexFormat = enum(i32) {
277277
SHORT4N,
278278
USHORT4N,
279279
UINT10_N2,
280+
HALF2,
281+
HALF4,
280282
NUM,
281283
};
282284
pub const VertexStep = enum(i32) {

0 commit comments

Comments
 (0)