C74 and opengl...

Pis Pas's icon

I think MaxMSP is a great software for audio stuff, but after working a while with jitter and Opengl, I have noticed that this framework is so out of date and the implementations are so bad documented, that it's not worth to continue with this software. Nevertheless, I wish to ask C74 if there are any plans to update your graphics implementations and your docs?

A few examples:

- the shader editor is the worst thing ever... This editor is just useless.

- simple OpenGL errors seems to crashes jitter or freezes the pc.

- "can't bind uniform". If a uniform is unused we get this message on every frame. That's a horrible design and it's perfect to slow down the fps!

- working with lua and Opengl is just not possible... The documentation seems to be written in one day and there are two examples to work with. It's incredible the amount of time we have lost trying to figure out simple things...

- jit.gl.pass. At least multipassing but horrible complicated implementation.

- the xml shader header feels like we are in the 90s

- The current supported OpenGl version is 10 years old.... We have to go back in time to program in Jitter!

- We can read 3d Textures but we can't write them...

It seems that MaxMSP tries to cover a lot of areas (Lua, java, javscript etc) but there are not enough employers to document and maintain all this goodies.
I really hope that someone from c74 gives me a few insights about whats going on in the Jitter area and when they will make an update on Opengl.

Best

enrico wiltsch's icon

+1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Pedro Santos's icon

Enrico, your entire contribution to this forum amounts to... this post.
I'm just replying because your "comment" messed up the forum's homepage.

Pis Pas's icon

Is this a taboo topic for c74?

Pedro Santos's icon

Hi, Luca. Here are my two cents, so take it for what it's worth (probably less than that)...

I don't think this is a taboo topic, but I would say that the chances of getting a useful response might be correlated to the way your post is perceived. And, in this case, when in the introductory paragraph you say that "this framework is so out of date and the implementations are so bad documented, that it’s not worth to continue with this software", you really set the tone, independently of the valuable criticism that may follow. And, even then, expressions such as "the worst thing ever… This editor is just useless", "That’s a horrible design" and "horrible complicated implementation" aggravate it.

As an example, read the following topic, also related to Jitter and its OpenGL implementation, and notice the tone and the degree of participation of other members of this community and of Cycling74's employees:
https://cycling74.com/forums/curious-about-your-opinions-on-jitter-vs-touch-designer-vs-unreal-vs-unity-U

Now, without any kind of irony, it seems that you may have reached some of the limitations of Jitter and might be better served with another graphics framework or development platform, such as a game engine. The Max/Jitter platform is not (and cannot be), after all, a universal solution. It has its strengths and weaknesses, as any other. There are types of projects where it excels and others where it's not the right tool for the job at all.

Anyway, happy patching (or equivalent)! ;-)

bugchk's icon

Hmm sadly to hear (about OP info). Just, i`m not much dig into max yet, but planned learn it exactly in visual\motion graphics direction. Would be good to develop\support this things indeed.
I hope that all not so bad though.

Pis Pas's icon

@Pedro my tone is a little bit rude and not very constructive, I have to apologize for that. On the other hand, this is my point of view :-)
And I have never lost so much time trying to fix simple things, so the frustration is big.

I don't like to work with frameworks where I have to gather all the information in a forum, look all the time for hacks, because some things are working and others don't, or are just not implemented. If I pay for something I expect at least a decent documentation.

About OpenGL: I can't find any statement from C74 about what's gonna happen in the future and when we can expect an update. For me this is crucial and frustrating.

"The Max/Jitter platform is not (and cannot be), after all, a universal solution."
I don't agree with that. Why can't we have an up to date software with decent docs?

I think C74 stopped developing the OpenGL part and they switched to more simpler solution like jit.gl.pix, so novice users can program on the gpu too. Which I personally like for little patches but it's not sufficient for bigger task. Also you have to learn another syntax and porting code from standard languages is always a mess. I think this is just a workaround and a commercial strategy from C74. But at the end they will lose all the more advanced users.

yaniki's icon

Kind of public "roadmap" to give users some info about Cycling74 dev team plans will be great, indeed.

To clarify things a bit: [jit.gl.pix] is essentially producing OpenGL pixel shader, so it is a part of the OpenGL. And you can still use "typical" shaders via [jit.gl.shader] if you prefer - I mentioned that, because this is an example of something, what is very good in Max: you may choose the technology which is more suitable for you.

Personally I see gradual progress in the OpenGL implementation in Jitter, but some of your remarks appeal to me. Better editor for shader code will be very useful. The same for documentation (especially about gen... and gen~ in audio domain). Better access to the geometry (geometry shaders...) too.

There is another problem with Jitter, but it is typical for nearly all patching systems (not to the Max itself) - some problems and tasks are very hard to express visually without boring additional effort. Good example are CV algorithms for motion tracking - basically it is much more easier to implement them by traditional coding (even creating new externals handling these tasks), not as patches.

Pis Pas's icon

" [jit.gl.pix] is essentially producing OpenGL pixel shader, so it is a part of the OpenGL."
I'm aware of that thanks. Don't get me wrong, gl.pix is definitely a cool feature. But in my opinion it would be better to get on times with opengl, and let the community develop nice features, then having another "workaround" for beginners.

"Better editor for shader code will be very useful"
I was using notepad++ (pc) and the glsl extension and then I have a metro at 500 ms and a read "yourshader.jxs" message to jit.gl.shader. works..

About the docs... well I really hate when companies promotes new features but they don't provide a decent documentation. It's like saying.. I don't give a s*** if you lose 1-2 weeks trying to find out stuff. I appreciated my time and if I'm working on a commercial project, my client will not pay me for this, but I still have to do it.

"Better access to the geometry (geometry shaders…) "
I have used geom shaders without any problems... may be they work on pc only?

"Good example are CV algorithms for motion tracking – basically it is much more easier to implement them by traditional coding (even creating new externals handling these tasks), not as patches"
That's the point... we can't do this kind of stuff because we need atomic counters and compute shader OpenGL 4.x. More or less every software out there has this GL functionality and if not, they provide a way to implement this functionality by yourself (like JUCE f.e.)

Rob Ramirez's icon

we have plans to update OpenGL. we don't have a timeline to share.

if you have patches that crash unexpectedly, and steps to reproduce i'm happy to look at them.

if you have specific questions on specific functionality, i'm happy to do my best to answer them.

jit.gl.pix is absolutely not a workaround for beginners.

yaniki's icon

@ LUCA NEIL

<
I have used geom shaders without any problems… may be they work on pc only?>>

Yeah, this was unclear. There is an access via [jit.gl.shader] (on PC and Mac, of course), I was thinking about something more integrated to the Max patching paradigm... which already is partly implemented - via [jit.gl.material] - with the 7.3.2 update (https://cycling74.com/forums/new-7-3-2-jitter-features/).

aceslowman's icon

A little over a year later here, but I didn't want to create a new topic when this one already has some valuable discussion. With Max 8 approaching, is there any word yet about more modern OpenGL support? That has always been a major source of confusion for me, as I'm usually bouncing back and forth between different frameworks utilizing OpenGL.

Here is one example. I'm working right now on achieving some subsurface scattering that I first implemented in Unity. I began by attempting to extend mat.phong.glsl.jxs shader, but immediately I'm confronted with eight unlabelled uniforms for the lighting, mixed with the occasional built-in use (i.e. gl_LightSource[0].position). I can figure out how to utilize it, but situations like this leave me incredibly confused on how to patch effectively or write decent shaders.

I guess my main point is that my knowledge of OpenGL in Jitter has become very specific to Jitter, and as I have been learning more modern OpenGL in other software, I constantly have this point of friction where my conceptual model of OpenGL in Jitter is nothing like my model of OpenGL anywhere else.

I don't want to leave behind Jitter, I love working in it and I love the way that it can integrate well with audio patches and M4L. I would just love to be able to use OpenGL in a way that is consistent with how I see it used elsewhere.

Spa's icon

+1

Dg's icon

+1

Rob Ramirez's icon

an OpenGL update for a limited subset of Jitter-GL functionality is in the works for Max 8.

Spa's icon

It will be so nice to have an cuda example of building an object...

hollyhook's icon

now opengl deprecated on osx, i wonder where jitter will go...

Roman Thilenius's icon

- the xml shader header feels like we are in the 90s


we are not n the 90s anymore? then why i still use quickdraw?

AnBe's icon

now opengl deprecated on osx, i wonder where jitter will go...

hope developers have something to say about this…
I suppose the only proper way forward on osX is Metal.

yaniki's icon

On Windows DirectX, on macOS Metal. That's probably the mid-term future. Because Jitter needs some kind of a common foundation on both systems it will be probably necessary to implement some kind of wrapper translating universal (more or less) code to system-specific API. I'm not a specialist on that field, but some solutions for this problem exists already.