Modern OpenGL ES 3.0 / 3.1 compute shaders for Java with Android 5.0

Hi folks,

Check out these Github repos I just posted this morning for modern OpenGL ES 3.0 / 3.1 demos and a lightweight framework that makes using this tech much easier from Java / Android

The main demo repo is here, but check out the install guide:

Glad I could get my first open source (Apache2) effort up after all these years. There are few if any modern OpenGL ES 3.0 / 3.1 demos for Java with Android and this is important tech. I spent a good chunk of the last week pulling out code from my commercial middleware (TyphonRT) to make a lightweight and concise GL framework that makes working with modern GL much easier. I also provide a few demos with more forthcoming though this is a spare time effort.

I ported over Kai’s LWJGL / basic ray tracing in compute shaders demo code to OpenGL ES 3.1 and it works like a charm on the Tegra K1. Can’t wait for his follow up post with the full code for something much prettier.

The nice thing is that the demo code is separated from the framework, so the framework can be used separately. Eventually I’ll be porting the NVidia Gameworks demos to Java / Android. You do need a Tegra K1 based device to take advantage of OpenGL ES 3.1 as well Motorola and / or Qualcomm shipped deficient drivers that only supports 3.0 for the Snapdragon 805 / Adreno 420 on the Nexus 6 launch; talk about a disappointment there. This framework and repo is updated for the absolute latest Android Studio 1.0.1 and build tools “21.1.2”. There is a reasonable guide on how to check the code out, but a prebuilt apk is also available. Lots more to say, but I’d be glad to answer any questions about modern OpenGL on Android. I’ll be expanding the wiki on the repos linked here in the next week.

If you think the code above is useful or cool it’s the basis for where I’m headed with building a next-gen video engine for Android. I have ~8 hours left on a crowd funding campaign that will help me get it out sooner than later having bootstrapped to 95% of the way there spending 2.5k hours over the last year building it covering all costs out of pocket ($80k) / not quite close to raising the funding goal ($20k), but I’m most interested in finding early users who are interested about next-gen video and having fun / cool toys before iMeh; if you back the project even though it likely won’t time you’ll get an early invite regardless! I’ll keep it short as there is a video available to check out of it in action.

KS here: http://kck.st/1xA3R61 At this point I’d really just like to connect with interested early users as the funding goal is well… yeah… Thanks folks!

Hi

Why are all fields public in FBOData? In my humble opinion, the source code of the demos is interesting but the framework does a lot less than even JOGL. Good luck.

Ahh Julien Julien Julien… :clue: :-* :persecutioncomplex: It’s not so much as a framework as it is a compact utility library that replaces the very long in the tooth mechanisms that have been around since Android 1.0. The library is for simple demos though I’ll in time provide all the utility code that makes it possible to port the NVidia Gameworks samples to Java for Android. I’m trying to strip things down to the bare minimum of what is necessary for modern OpenGL and making the code clean for small demos. It’s good for test cases too to test different mobile GPU manufacturers I already found some issues in the Snapdragon 805 Adreno 420 that don’t exist in the 320 / 330 or Tegra K1 and have run into the proper folks at Motorola to have them take a look. One of the demos briefly shows the problem; only Nexus 6 / Adreno 420 with current weak drivers is showing the problem. The hardware is supposed to support OpenGL ES 3.1, but a gimped driver was shipped (just GLES 3.0 support). So, having samples that run across platform really show the glaring issues that manufacturers need to fix as some developers notice!

I actually stripped a lot of the utility code out of TyphonRT itself. What I released is definitely not the meat of TyphonRT from an architecture standpoint. That is why FBOData has public fields and accessor methods as I just got rid of the interface as it was one more class to track. IN a component architecture where there is a lookup often to retrieve an object one makes the member for data objects public.

Not trying to take over any binding anytime soon (the utility code posted uses the Android SDK bindings, but makes them pleasant to use). I actually welcome LWJGL3 or even JOGL to GLES / EGL especially whoever will potentially take on making a full profile Java / OpenGL Binding for the Tegra K1 including all the cool NV extensions (NV_command_list), etc.

Keep in mind that I read the whole source code of your projects (demos + framework). textureID is a public field and has public accessors, it looks a bit weird.

Maybe I misunderstood your sentence. JOGL 2 is the result of a merge between JOGL and JOGL-ES, it supports OpenGL ES 3 but we avoid exposing vendor specific extensions.