Wait what? This is completely redundant and will negatively impact performance and memory.
Wait what? This is completely redundant and will negatively impact performance and memory.
Once you hand off the vertices to the WebGL context, it's all the same bits; your file loading strategy has no performance or memory impact.
This is one of those weird cases where, despite obj being a simpler format on paper, it would likely be slower to parse due to having to hand-roll the parser in JavaScript and not use the browser's native built-in parser instead.
JSON is nice as a hand-editable text format. It isn't designed to be fast to parse, or to produce small files.
It turns out that the files are roughly the same size since the parser just shuffles the data around to make it easier to pass to your uniforms later.
`f16-model.obj` -> 396.9 kB (396947 bytes)
`f16-model.json` -> 397.5 kB (397534 bytes)
Using pre-parsed `JSON` here helps you avoid needing to parse your `.obj` file during runtime. Plus, since JS runtimes are heavily optomized for JSON, this seemed like a good starting place.
Super open to better alternatives of course!
Granted, you could say they could reduce total memory usage by not parsing it all at the same time or something, but one way or another, you'll have to parse it into JS.
Sounds like they just liked json