Jax's true calling: Ray-Marching renderers on WebGL (benoit.paris)

by BenoitP 14 comments 91 points
Read article View on HN

14 comments

[−] heisenzombie 44d ago
Jax is super fun to use outside of ml!

Recently I had fun reimplementing an old (but still usable!) code for accelerator optics. It involved transfer matrices for a 6D phase space to second order. Most of the FORTRAN77 source code was just pages and pages of hand-differentiated 6x6x6 matrices (with quite non-trivial elements) and the plumbing to painstakingly propagate those jacobians around for fitting... all replaced with a single, magic, call to jax.grad(). Felt like cheating!

I'm also super interested in its application to modelling, e.g. projects like https://github.com/deepmodeling/jax-fem -- particularly for chaining different sorts of simulations and analysis together and getting gradients through the lot. Also quite magic!

[−] BenoitP 44d ago
Yeah :)

I had a lot of fun writing the article! And it is only half a joke

My intuition for so-called world models is that we'll have to plug modules, each responsible for a domain (text, video, sound, robot-haptics, physical modelling) It'll require to plug modules in a way that will allow the gradient to propagate. A differentiable architecture. And JAX seems well placed for this by making function manipulation a first citizen. Looking at your testimony comforts me in this view

[−] corndoge 44d ago
Moving my thumb across the image causes the ball and cube graphic to disappear to black and then scrolls the page. Firefox on iOS
[−] BenoitP 44d ago
Damn, I should have spent more time QA-ing that post. I'll try to patch it.

You did not miss much though: it just rotates the scene.

[−] akoboldfrying 44d ago
Me too, Chrome on Android.

I like the concept of applying Jax to SDF sphere tracing :)

[−] VHRanger 44d ago
Pytorch is such a maddening mess of half implemented research features in a state of Heisen-deprecation, Jax becomes more appealing to me by the day.
[−] vatsachak 44d ago
Yeah GPU compilers will be used for way more things than AI because parallel = good
[−] jedbrooke 44d ago
We’ve come full circle and started using Graphics Processing Units to process graphics again
[−] chillee 44d ago
I'd also note that you can more or less write the same code in PyTorch with torch.vmap
[−] dvt 44d ago

> the thing JAX was truly meant for: a graphics renderer

I mean, just like ray-tracing, SDF (ray-marching) is neat, but basically everything useful is expensive or hard to do (collisions, meshes, texturing etc.). I mean mathy stuff is easier (rotations, unions/intersections, function composition, etc.) but 3D is usually used in either modeling software or video games, which care more about the former than they do the latter.