Jitter 8.5 and GLCore


    Rob Ramirez
    Nov 02 2022 | 8:33 pm
    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
    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
    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
    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
      Rob Ramirez
      Dec 06 2022 | 8:43 pm
      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
      diablodale's icon
      Feb 02 2023 | 6:54 pm
      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
      Rob Ramirez's icon
      Rob Ramirez
      Feb 03 2023 | 10:13 pm
      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
      Curveau's icon
      Mar 24 2023 | 5:56 pm
      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
      Matteo Marson's icon
      Matteo Marson
      Apr 11 2023 | 4:52 pm
      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
      Curveau's icon
      Apr 11 2023 | 7:49 pm
      Thanks for the response; will check out the patches!
    • mirrorboy's icon
      mirrorboy's icon
      May 28 2023 | 4:51 pm
      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.