Jitter 8.5 and GLCore

Rob Ramirez's icon

Happy post RNBO day everyone, I've got some details and context on what the Jitter team has cooked up for the 8.5 update.

Top of the list, GLCore (or glcore) and what it's all about. With 8.5 we've done 2 things:

  1. Renamed the formerly beta gl3 engine to glcore

  2. Transitioned our default graphics engine from the legacy gl2 to the modern glcore.

The reason for the renaming is to better reflect the reality that most graphics cards will support OpenGL versions beyond version 3. The engine provides support for modern core profile OpenGL at whatever version your graphics card supports.

For existing gl3 users not much has changed in functionality (other than the new juicy bits described below). However the consequences extend beyond the technology. We now have a solid foundation for continuing our engine modernization and growth, and can fully document the new behavior and features. To that end there are a handful of new examples to check out in the glcore Examples Extras patch.

For gl2 users this is a significant but hopefully seamless change. We will publish more details on how best to utilize modern graphics engines and other ins and outs, and we strongly encourage contacting support with any issues. However if you wish to revert back to gl2 simply change your Graphics Engine (gfxengine) preference back to gl2. You first might want to check out the afore mentioned glcore Examples patch to see what you're forgoing.

glcore Examples Extras patch

What's New

A new entry to our Jitter Tools suite is the jit.gl.textmult object, which allows for manipulating letters and words of text using a jit.gl.multiple like interface and highly efficient mesh rendering. As an added bonus for text lovers we’ve removed the 1024 character limit on jit.gl.text input strings.

the jit.gl.textmult object

Also included with 8.5 are some lovely new jit.gl.pass post processing effects. The atmospheric effect adds global fog and atmospheric scattering to any 3D scene with ease, and for experimenting with global illumination check out the temporal screen-space ambient occlusion (tssao-gi) and screen-space reflections (tssao-gi-ssr and ssr) effects.

jit.gl.pass @fxname atmospheric

Speaking of global illumination, the new jit.gl.environment object handles the loading and sharing of environment map resources for image based lighting (IBL), cubemap, and skybox rendering for supported objects. This currently includes jit.gl.pbr, jit.gl.material, and jit.gl.skybox. The object functions like jit.gl.light, where if a context has an environment attached, the supported objects will use it for rendering.

We've also added glTF PBR material support to jit.gl.model, giving much better results when rendering these model files. In the video below we see non-PBR rendering on the left, and PBR rendering on the right.

For links to the example patches mentioned (and loads more) check out the glcore Examples and Jitter Tools Extras patches, and the jit.gl.pass reference page.

Happy Jittering!

Rob Ramirez's icon

Hey everyone, we've got an update for glcore included in the Jitter Tools 1.0.6 version now live in the Package Manager. This update addresses a handful of reports we've received since the release of 8.5 and is recommended for all 8.5.x glcore users.

  • fix move texture output when skybox enabled in same context

  • jit.gl.mesh - fix crash on certain adjacency draw modes

  • jit.gl.text3d - fix memory leak

  • jit.gl.slab - fix color attribute

  • jit.gl.path - evalout equals zero drawing fix

  • jit.gl.text2d - fix screenmode 0 rendering with high dpi display


A couple new features as well:

  • jit.gl.environment - reflection map edge length attribute

  • jit.gl.meshwarp - external input matrix for initial mesh geometry via mesh_matrix message

  • jit.gl.meshwarp - output_mesh_matrix message to output the mesh vertex data

diablodale's icon

Rob, congrats to you and c74 on glcore. I get the effort your team put into it. :-)
Are there C/++ examples for the updated interfacing possible HOST to/from GPU for textures, buffers, mapping between max,opencl,opengl, etc.

Rob Ramirez's icon

Thanks much Dale.

Unfortunately I don't have a great answer for you. The SDK has not been updated with examples for developing for glcore, and given the current state of flux in our backend graphics engine work, I don't have a good estimate for when that might change.

That being said, both Syphon and Spout are open source and demonstrate how an external can support both legacy gl2 and modern glcore using some wrapper functions we expose in the jit.gl.draw.h header file. If you're only concerned with core profile support you can ignore these wrappers and link to the gl3 library headers instead (which may be easiest by defining GL3_VERSION=1 in your project preprocessor definitions). Additionally, the basic principles of jit.gl external development outlined in our SDK documentation still hold true.

I'm also more than happy to provide whatever insight I can for any brave explorers in this space.

Curveau's icon

Fantastic, thank you Rob and the team!

Do you have do you have any idea when TXAA / TAA is coming to Jitter!? Ref here at 16m20s https://youtu.be/S7xPbjICNsw

Matteo Marson's icon

Hi Curveau,

At the moment, it's quite complex to make it available as a built-in tool, but if you're interested in it, check out the patches at the link above

Curveau's icon

Thanks for the response; will check out the patches!

mirrorboy's icon

I am excited about the great jitter upgrade!

I'm working on some samples, so check out my twitter as well.

https://twitter.com/mirrorboy/status/1662831859439644674?s=20
https://twitter.com/mirrorboy/status/1662699971462979585?s=20

I have a few questions as I use it.

Will the pbr in jit.gl.model be reflected without jit.gl.pbr connected? (I loaded the glTF and it seems to reflect the pbr textures without specifically connecting jit.gl.pbr or jit.gl.material). and, I could not change pbr parameter on jit.gl.model.

Also, if the texture loaded in jit.gl.model references a multi-texture by albedo, can I use the multi-texture in jit.gl.pbr when drawing with matrixoutput or jit.gl.mesh?

Jitter's material has many inheritance relations and parameters, and jit.gl.model is very difficult due to some invisible parts, so it would be great to have contents like 1st step.