This drops the clap dependency, which is a boost for compile time/
build size/binary size. Also alows us to use a consistent method
for reporting errors.
Error and usage messages got a little love too.
Edges are still a bit rough on this I think, but can work on it
more later.
This reverts commit 2c2aaeae83.
Some models from Chocobo Tales become unacceptably "jittery" with
STEP interpolation. It's possible that rotaions are STEPed and
trans/scales are lerped, don't know.
For now, back this out.
Instead of every vert having a SmallVec of its influences, have it
store an offset into the packed buffer of all the influences
instead.
This is way more efficient. Like, 10% of the size it was before.
Also lets us drop the smallvec dependency.
I got the code for render command 0x4 decompiled and started
deciphering it. Now have a somewhat more accurate picture of how
materials work. Most of that more accurate picture is still not
put into practice though.
I decided the DS is unlikely to be doing lerping.
This also seems to fix some visual bugs with .dae/.glbs when
a curve has a jump discontinuity (eg. b00Walk in Ore ga).
The intermediate values from lerping would be visibly wrong.
The Windows shell doesn't expand globs; programs are expected to
do it themselves. Supporting this should make it easier for
Windows-friends to do stuff like pass all the *.nsbtx files to
find missing textures.
The wild crate does all the work.
(Hope this works; I don't own a Windows box.)
Obviously highly tentative. This uses the EXT_property_animation
extension. Since I'm not aware of any implementation other than
the one I did in kson's Blender importer, this isn't very useful
atm...
This sometimes causes ordering artifacts, but makes lots of things
like water look more like they're supposed to.
Possible optimization is to only enable it for calls that need it
(eg. they have a translucent texture), but it seems fast enough
as is.
Fake the way the normal and vertex color on the DS overwrite one
another by clearing one whenever we set the other.
Fixes a bunch of stuff that was pure black before.
Practically speaking, this halves the rate of playback.
Evidence that this is correct is that scrolling animations which
you expect to translate the (say) U by the whole width of the
texture now do so, instead of translating it by twice the width.
Successfully understands at least some animations that animate the
texture coordinate UV translation. Playback is waaay too fast
currently (maybe there's some field modulating playback speed?).