|
643 | 643 | - SG_VERTEXFORMAT_SHORT2
|
644 | 644 | - SG_VERTEXFORMAT_SHORT4
|
645 | 645 |
|
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: |
647 | 647 |
|
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) |
649 | 651 |
|
650 | 652 | So for a vertex input layout which works on all platforms, only use the following
|
651 | 653 | vertex formats, and if needed "expand" the normalized vertex shader
|
@@ -1535,6 +1537,8 @@ typedef enum sg_vertex_format {
|
1535 | 1537 | SG_VERTEXFORMAT_SHORT4N,
|
1536 | 1538 | SG_VERTEXFORMAT_USHORT4N,
|
1537 | 1539 | SG_VERTEXFORMAT_UINT10_N2,
|
| 1540 | + SG_VERTEXFORMAT_HALF2, |
| 1541 | + SG_VERTEXFORMAT_HALF4, |
1538 | 1542 | _SG_VERTEXFORMAT_NUM,
|
1539 | 1543 | _SG_VERTEXFORMAT_FORCE_U32 = 0x7FFFFFFF
|
1540 | 1544 | } sg_vertex_format;
|
@@ -4654,6 +4658,8 @@ _SOKOL_PRIVATE int _sg_vertexformat_bytesize(sg_vertex_format fmt) {
|
4654 | 4658 | case SG_VERTEXFORMAT_SHORT4N: return 8;
|
4655 | 4659 | case SG_VERTEXFORMAT_USHORT4N: return 8;
|
4656 | 4660 | case SG_VERTEXFORMAT_UINT10_N2: return 4;
|
| 4661 | + case SG_VERTEXFORMAT_HALF2: return 4; |
| 4662 | + case SG_VERTEXFORMAT_HALF4: return 8; |
4657 | 4663 | case SG_VERTEXFORMAT_INVALID: return 0;
|
4658 | 4664 | default:
|
4659 | 4665 | SOKOL_UNREACHABLE;
|
@@ -5502,6 +5508,8 @@ _SOKOL_PRIVATE GLint _sg_gl_vertexformat_size(sg_vertex_format fmt) {
|
5502 | 5508 | case SG_VERTEXFORMAT_SHORT4N: return 4;
|
5503 | 5509 | case SG_VERTEXFORMAT_USHORT4N: return 4;
|
5504 | 5510 | case SG_VERTEXFORMAT_UINT10_N2: return 4;
|
| 5511 | + case SG_VERTEXFORMAT_HALF2: return 2; |
| 5512 | + case SG_VERTEXFORMAT_HALF4: return 4; |
5505 | 5513 | default: SOKOL_UNREACHABLE; return 0;
|
5506 | 5514 | }
|
5507 | 5515 | }
|
@@ -5529,6 +5537,9 @@ _SOKOL_PRIVATE GLenum _sg_gl_vertexformat_type(sg_vertex_format fmt) {
|
5529 | 5537 | return GL_UNSIGNED_SHORT;
|
5530 | 5538 | case SG_VERTEXFORMAT_UINT10_N2:
|
5531 | 5539 | return GL_UNSIGNED_INT_2_10_10_10_REV;
|
| 5540 | + case SG_VERTEXFORMAT_HALF2: |
| 5541 | + case SG_VERTEXFORMAT_HALF4: |
| 5542 | + return GL_HALF_FLOAT; |
5532 | 5543 | default:
|
5533 | 5544 | SOKOL_UNREACHABLE; return 0;
|
5534 | 5545 | }
|
@@ -8708,6 +8719,8 @@ _SOKOL_PRIVATE DXGI_FORMAT _sg_d3d11_vertex_format(sg_vertex_format fmt) {
|
8708 | 8719 | case SG_VERTEXFORMAT_SHORT4N: return DXGI_FORMAT_R16G16B16A16_SNORM;
|
8709 | 8720 | case SG_VERTEXFORMAT_USHORT4N: return DXGI_FORMAT_R16G16B16A16_UNORM;
|
8710 | 8721 | 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; |
8711 | 8724 | default: SOKOL_UNREACHABLE; return (DXGI_FORMAT) 0;
|
8712 | 8725 | }
|
8713 | 8726 | }
|
@@ -10104,6 +10117,8 @@ _SOKOL_PRIVATE MTLVertexFormat _sg_mtl_vertex_format(sg_vertex_format fmt) {
|
10104 | 10117 | case SG_VERTEXFORMAT_SHORT4N: return MTLVertexFormatShort4Normalized;
|
10105 | 10118 | case SG_VERTEXFORMAT_USHORT4N: return MTLVertexFormatUShort4Normalized;
|
10106 | 10119 | case SG_VERTEXFORMAT_UINT10_N2: return MTLVertexFormatUInt1010102Normalized;
|
| 10120 | + case SG_VERTEXFORMAT_HALF2: return MTLVertexFormatHalf2; |
| 10121 | + case SG_VERTEXFORMAT_HALF4: return MTLVertexFormatHalf4; |
10107 | 10122 | default: SOKOL_UNREACHABLE; return (MTLVertexFormat)0;
|
10108 | 10123 | }
|
10109 | 10124 | }
|
@@ -11900,6 +11915,8 @@ _SOKOL_PRIVATE WGPUVertexFormat _sg_wgpu_vertexformat(sg_vertex_format f) {
|
11900 | 11915 | case SG_VERTEXFORMAT_SHORT4: return WGPUVertexFormat_Short4;
|
11901 | 11916 | case SG_VERTEXFORMAT_SHORT4N: return WGPUVertexFormat_Short4Norm;
|
11902 | 11917 | case SG_VERTEXFORMAT_USHORT4N: return WGPUVertexFormat_UShort4Norm;
|
| 11918 | + case SG_VERTEXFORMAT_HALF2: return WGPUVertexFormat_Half2; |
| 11919 | + case SG_VERTEXFORMAT_HALF3: return WGPUVertexFormat_Half4; |
11903 | 11920 | /* FIXME! UINT10_N2 */
|
11904 | 11921 | case SG_VERTEXFORMAT_UINT10_N2:
|
11905 | 11922 | default:
|
|
0 commit comments