Oxsomi Core3 is a combination of standalone C libraries useful for building applications, such as types, platform, graphics abstraction and file formats
[X] oiDL add compression such as brotli but keep it compatible
[x] oiSB basic -> oiSB more advanced
[x] oiSH basic
[x] oiSH add support for multiple languages in one file as well as multiple targets in one. This also means different binding types (DX12 heap-like vs VK resource type-like). This allows the compiler to make better decisions for linking them together.
[x] oiSH add wider types to support modern shaders.
[x] oiSH extension support.
[ ] oiRM basic
[ ] oiRM should require a position in a position buffer separate from attributes (32-bit or 16-bit float2/float3 possibly snorm).
[ ] ~oiRM; optionally allow including a kD tree for CPU raytracing (only if triangles).~
[ ] oiRM; include AABB.
[ ] oiRM; attributes should be marked as "position, texcoord, normal, tangent, bitangent, color, data". Then also if they could support lossy. This allows lossy to combine TBN into TN (2x F16x2 = 8 byte) instead of (3x F32x3 = 36 byte). Color of 4-byte instead of 16-byte (sRGBA8 or SRGB10A2), uv (SNORM16x2 (4 byte instead of 8) but multiplied by 2 to support hacks with looping). This would bring our total to 28 Bpv (float3 pos, uint uv, uint color, uint2 TBN) while a mesh without color and using halfs would use 20 Bpv (uint2 pos, uint uv, uint2 TBN).
[ ] oiRM should have standard format available for easy standardization. This standard should be the 28 Bpv one. While a minimal version of 20 Bpv could also be beneficial to us.
but keep it compatiblehttps://github.com/Nielsbishere/oish_gen/blob/master/include/graphics/format