Will there be an alternative in 2.8 for Blender Internal / GLSL to export materials etc?

At SenseGraphics (and in many other exporters), we (and others) are relying on the gpu module of the python interface to export the material node tree as GLSL shaders. After trying out a nightly version of Blender2.8, we discovered that most of the Python API’s GPU module are missing. After some investigation in the code, we found out that this was part of the Blender Internal removal.

I tried to search for related post here in devtalk and in phabricator:

  1. one other post asks about OpenGL rendering of Eevee. (wondering if that somehow relates to us or not?)
  2. a post toadd fragment shaders to 2.8, there i found some ongoing patch and discussion about support for external engines and GLSL in the wiki
  3. the Blender Internal removal commit mentions that exporting to GLSL from Eevee would be complicated
  4. also in the Blender Internal removal commit was some mentioning of (re)adding support for collada later on. Is this somewhere on some roadmap?

We are wondering how to move forward and are happy to start a discussion here.

  1. are there already some plans on how to export materials in 2.8?
  2. I guess we should follow the GLSL discussion on phabricator? Some plan to redesign was mentioned, we would happy to contribute to that discussion.
3 Likes

Hi,

I’m also part of the Sensegraphics project team as a 3D artist.

Sometime last year, I read the article Sebastian mentioned about shader pyNode export. This idea was very exciting to me, because it is exactly what I’d been “dreaming” of for the last 5 or so years. I had talked with Blender Devs, like Dalai and Thomas Dinges, about it before, but back then there were no plans for shader PyNodes. And daily project work kept me from following the idea actively.

From my basic technical understanding, these are PyNodes with some GLSL code “attached to them”. Am I right? (and was this idea followed/evolved during Eevee development?)

I’m asking myself if it’s possible to utilize them to export a (limited?) set of Eevee’s functionality, like the PBR shaders plus all that fits into a mostly straightforward rendering pipeline (color correction, math nodes etc.). This would - from my point of view - fit perfectly, and be even more flexible than reading the shaders ‘en bloc’ for exporting, like it’s done in 2.7.

What do you think?

Cheers,
Michael