The Max 8 Jitter bakers dozen + 1

Rob Ramirez's icon

Hello Jitterati!

Max 8 is here and represents a huge effort from the C74 team, as should be obvious from the recent promotional materials and the massive changelist and bugfix list. I'd like to highlight a few of the Jitter features, and expound a bit on what's coming in the near future.

1 - Vizzie GL integration - A massive undertaking, but perhaps the significance is less obvious to our advanced users. I would just say, give it a try. It's tons of fun to drop these GUI and snapshot ready modules in with existing GL pix / slab patches and start wanging away. Pro tip, object menu -> transform -> bpatcher to patcher.

vizzie-demo.maxpat
Max Patch
here's a little patch I made messing around (dbl-click the vz objects to open their GUI)

2 - Vizzie Viewr - dope little module that can be dropped into any GL patch and used as a preview window with much better performance than vanilla pwindow objects.

Max Patch
Copy patch and select New From Clipboard in Max.

3 - Multi-drawto - possibly the feature with the most potential for advanced users, you can now draw to multiple jit.gl.node sub-contexts from a single geometry source.

Max Patch
Copy patch and select New From Clipboard in Max.

4 - Another new jit.gl.node trick is support as a jit.gl.multiple target. Check the help file to see it in action.

5 - And finally on the jit.gl.node tip, scene dict output via the getscene_dict message. This feature is still a baby but has potential to develop into some exciting features like scene capture and export. Check out the jit.gl.node reference page on getscene_dict for a description.

6 - jit.gl.asyncread texture support - you can now readback any GL texture via the jit.gl.asyncread object. This should give significant performance improvements over jit.matrix readback (e.g. when recording a GL scene or analyzing a texture via cv.jit), and means the readback does not have to be tied to a visible gl.render context. jit.world now uses this readback technique for its output_matrix functionality (see the matrix_mode_async reference listing for more info).

7 - jit.gl.model update to support FBX, glTF and OpenGEX model file formats.

8 - A physics library update and a new num_threads attribute to jit.phys.world that will cause the collison dispatcher process to run in multiple threads.

9 - jit.grab can now open and close its device via a toggle.

10 - jit.gl.shader / jit.gl.slab now opens an editor with default shader text when double-clicked without specifying a file.

11 - jit.gl.layer alias instantiates a jit.gl.videoplane with some default settings that make it more conducive to layering images. Check the jit.gl.videoplane help file for more info.

12 - jit.gl.pix export improvements and fixes for the three possible export targets: JXS, webgl, and ISF. See the reference page for more info.

13 - Default GL Context preference - allows for specifying a GL context that will add any jit.gl or video object instantiated without an explicit drawto specified. Possibly useful to those of you building complex modular systems.

+ 1 - The transform -> attributes to arguments object menu command should be much more useful for jitter objects.

As for the future, you may have noticed a new Jitter preference setting name OpenGL Engine in the preferences window and are now wondering what that's all about. You may also have expected Max 8 to bring the much longed-for OpenGL core profile support to your jitter patches and are wondering why it's missing. Dear reader, it's coming soon.

A major push for Max 8 was getting the infrastructure in place to allow for seamless swapping of the backend GL engine, and that little unassuming preference is the fruits of that labor. Unfortunately there's still a major piece of the puzzle missing for my GL heads, and that is something we are calling the gl3 engine. The gl3 engine will bring core profile support to most of our GL objects, but it still needs some development and testing before we're ready to release via the Package Manager. Several other exciting GL features are wrapped up in the gl3 engine, and I very much look forward to introducing those over the coming months. Stay tuned for now, and happy patching!

sequencersampler's icon

Awesome, Rob! There's a ton to take in here. Very excited. Thank you!

phiol's icon
thanks a lot for this very pertinent post and thx a ton for the hardwork.

*edit: any work done on intergrading jit.gl.multiple and a text matrix attribute to using it with jit.gl.text @mode 3d. 
referring to this post 

https://cycling74.com/forums/word-snake-jit-gl-multiple-with-jit-gl-text-mode-3d-part2

thx

phiol
Spa's icon

Thanks Rob for the hard work.

Just 1 question.
Do Max8 solve the fact that UI objects 'kill' the fps of jitter render. It's always been the main problem for me, on professional project.
Did some changed happened in this sense, like another thread for UI.
I will try it soon, but I'd like to have your insight.

Thanks

Federico-AmazingMaxStuff's icon

10 - jit.gl.shader / jit.gl.slab now opens an editor with default shader text when double-clicked without specifying a file.

12 - jit.gl.pix export improvements and fixes for the three possible export targets: JXS, webgl, and ISF. See the reference page for more info.

That's so cool! Thanks a lot Rob and the Max crew for the hard work and the continuous support!!

MAX.XAM's icon

Thanks Rob !

Rob Ramirez's icon

@SPA hopefully others will chime in, but in almost all cases I've seen of Jitter patches with updating GUIs the performance in max 8 is significantly better, with much more consistent fps output. the improvements here are due to some major infrastructural updates, rather than anything Jitter specific. highly encourage you to check it out for yourself and let us know your results.

Rob Ramirez's icon

@phiol I have a design and prototype for a jit.gl.text multiple object that I'll be working to implement for a future max 8 update.

phiol's icon

thx Rob , that ‘s great news .

phiol

mzed's icon

With the patch for 2-Vizzie Viewer, I'm getting a "jit.time: no such object" error in the Max console.

pelo's icon

hi mzed,
perhaps you have to install the jit.mo package first ?
best,
pelo

Arvid Tomayko's icon

All this is super cool!

had same problem though, plus some other weirdness: the jit.mo package didnt install properly from package manager though in Max 8. It created a jit.mo file in packages folder with a generic file icon and that the MacOS get info said was a quicktime movie. It turned into a folder when I renamed it, but turns back into a file whenever I give it the correct name again. Super weird!

Also, the 1 - Vizzie GL integration patch gives me a blank black result. No console errors, until i open the help file for vz.2tonr, then I get a bunch of errors in the console:
jit.gl.videoplane: jit_ob3d_drawimmediate: GL Error: Invalid Framebuffer Operation
jit.world: jit.gl.fbo: error unbinding fbo: GL Error: Stack underflow
jit_ob3d_drawimmediate: GL Error: Invalid Framebuffer Operation
jit.world: erase: GL Error: Invalid Framebuffer Operation
jit_ob3d_drawimmediate: GL Error: Invalid Framebuffer Operation
jit.world: erase: GL Error: Invalid Framebuffer Operation
repeated over and over again.
Only a single frame of the video was drawn by the help patch.

The vz.2tonr help patch works fine when opened on its own though

AxiomCrux's icon

I have a feature request:

jit.gl.pix can export to ISF, and there is a huge and growing library of quality interactive shader format generators and effects. I am wondering if we might be able to get ISF read ability.

I don’t think this would be too difficult in most cases, since it mainly requires parsing the JSON header, It seems to be not too different from the jitter shader format.

I've converted and made tons of ISF files so I know the format pretty well, I’ve even started a slack group with the guys at VDMX and other developers making use of ISF about ideas and planning on ISF v3. I feel that this format can be a very good thing for consolidating and unifying the creative shader development world.

how can I help in making this feature a reality?

Rob Ramirez's icon
AxiomCrux's icon

Dope! Thanks! I hadn't talked to them in a bit and what do you know :)