xtk / X

The X Toolkit
http://www.goXTK.com
Other
786 stars 263 forks source link

ami vs xtk #213

Open nmarkowitz opened 4 years ago

nmarkowitz commented 4 years ago

Hi,

I'm trying to build a purely client-side application using javascript. It's unique in that it's initially not meant to be deployed to the web but meant to be run locally by double-clicking a html file and reading data from local files. I've been going back and forth between xtk and ami.js deciding which to use. It seems three.js (used by ami.js) may not be the best for this usage. Any suggestions? Any plans to stop supporting xtk in the near future and switch to ami.js? Please let me know when you get the chance and thanks for making both great libraries.

haehn commented 4 years ago

Hi there, I am of course biased but I can tell you that in the CS460.org computer graphics course a final project involved volume rendering and it turned out that XTK was much faster and more robust than current ami.js. That is the most recent (from December) experience I had when comparing the two.

nmarkowitz commented 4 years ago

Thanks for the response. I'm consistently playing around with both of them but that's really good to keep in mind as neuroimaging data takes a lot of memory. Looking forward to seeing ami.js develop further and thanks again for these libraries (and posting the CS460 course)

NicolasRannou commented 4 years ago

Yep I'd say it really depends on your use case and the functionalities you want to add.

Agreed with @haehn that is slower at loading/parsing because there is some uncesseray data packing happening.

Regarding volume rendering, it can be improved in ami by getting rid of the fancy packing (that may mean losing some precision in some cases, which is probably acceptable) and leveraging webgl2 texture 3d or array of 2d textures. There are some basic implementations at: https://threejs.org/examples/?q=webgl2#webgl2_materials_texture2darray and https://threejs.org/examples/?q=webgl2#webgl2_materials_texture3d

It'd go this way now that webgl2 is well supported and use XTK's super fast one for webgl1 only devices.

Keep in mind that the volume rendering XTK (Shear wrap) and AMI (ray casting) are using is fundamentally different

nmarkowitz commented 4 years ago

Thanks for such a detailed response. There's a possibility of some users using ie11 (which seems to not support webgl2) so using xtk may be the better option for now (also because I'm a bit of a newbie in js and xtk seems to require less code written out to create a rendering). I'm looking to have many surfaces loaded as well as volumes and additional objects such as spheres (foci). As I progress I'm sure I'll keep finding more advantages in either. Thanks again for all the help.