sokol_gfx.h: add support for half-float vertex attributes #745
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I had a need for half-float vertex attributes to save on memory, and figured this would be a useful addition upstream. Feel free to ignore this pull request if you disagree.
From my own research, it should be available on nearly all GLES2 devices (94.5% coverage according to http://opengles.gpuinfo.org/listextensions.php), and all WebGL2/GLES3 devices.
Note: A useful addition would be a
uint16_t sg_half_from_float(float)
/float sg_float_from_half(uint16_t)
utility function pair, to help with float16⇔float32 conversion.It is not part of this pull request (mainly since it's not strictly speaking part of sokol_gfx's core purpose), but I do have code available, if needed.
The
SG_VERTEXFORMAT_HALF{2,4}
enums are positioned at the end of the existing enum list, for integer-backwards-compatibility reasons. Feel free to reshuffle these if desired.