Linux dont see GLSL 330 or above version properly, while drivers see 4.60

Hello, its not first time, im not sure why 100 and 150 works, but not 330 or 400.
Maybe i do not understand this constants correctly.

Anyway using 150 EXT_TextureArray is not visible so tried using 330 and 400 (as texture array is for above 3.0 right?)

But we got Below error.

Its using newest Centos 7

Error:

Uncaught exception thrown in Thread[jME3 Main,5,main]
UnsupportedOperationException: No technique ‘Default’ on material ‘PBR Terrain’ is supported by the video hardware. The capabilities [GLSL330] are required.

it sounds like 330 would not be supported by hardware? if so then look below. there is: “OpenGL shading language version string: 4.60 NVIDIA”

Video Card info

$ glxinfo |grep -i version
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL core profile version string: 4.6.0 NVIDIA 430.34
OpenGL core profile shading language version string: 4.60 NVIDIA
OpenGL version string: 4.6.0 NVIDIA 430.34
OpenGL shading language version string: 4.60 NVIDIA
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 430.34
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
GL_EXT_shader_implicit_conversions, GL_EXT_shader_integer_mix,

$ uname -r
3.10.0-957.21.3.el7.x86_64

drivers from elrepo:

matdef version lines:

VertexShader GLSL330:   MatDefs/PBRTerrainV2/terrainPBRShaderV2.vert
FragmentShader GLSL330: MatDefs/PBRTerrainV2/terrainPBRShaderV2.frag

for 150 it dont see TextureArray extension of course. (but it dont have problem to see 150 version)

on Windows there are no problems like this. it worked even with 150 version constant and texture array.

Please help, thanks :slight_smile:

Are you using @RiccardoBlb 's Fork/Patch/Whatever?
Before that JME could only use the 3.1 Core Profile and other compats

i use Riccardo glsl file, thats all. Anyway its about j3md frag/vert glsl version, not Riccardo code.

anyway it work in Windows fine. not sure what problem Centos have…

using 3.3 jme.

This is the patch @Darkchaos is talking about, it should be merged in the 3.3 release.

Are you setting the renderer to LWJGL_330 ?

you mean:

settings.setRenderer(AppSettings.LWJGL_OPENGL3);

?

edit:

oh there is 33. i will try, moment

edit2:

with:

settings.setRenderer(AppSettings.LWJGL_OPENGL33);

we have:

Failed to create display
UnsupportedOperationException: Unsupported renderer: LWJGL-OpenGL33

forgot to add, with just 3, there is same error - topic error

Ok ,so… i don’t follow releases too closely, but it seems that the last one is 3.3.0-alpha2. If that’s the case, the patch has not been merged yet, as you can see here

Despite it being marked for 3.3.0 milestone…

My suggestion, as always, is to use a master branch snapshot.

2 Likes

What i noted, we had wrong included libs, it was lwjgl-alpha2 and lwjgl3-alpha2 packages.

both alpha 2, but anyway i understand it was wrong.

so we left just lwjgl3-alpha2. checked with

settings.setRenderer(AppSettings.LWJGL_OPENGL3);

but anyway had problem with “The capabilities [GLSL330] are required.”

so tried remove this line or set settings.setRenderer(AppSettings.LWJGL_OPENGL33);

both were working now correctly!.

so seems like we had 2 issues:

  • included both lwjgl-alpha2 and lwjgl3-alpha2
  • used settings.setRenderer(AppSettings.LWJGL_OPENGL3); instead of settings.setRenderer(AppSettings.LWJGL_OPENGL33);

One thing i dont understand is that your patch is for lwjgl-alpha2 right? so we dont use it really now since we use just lwjgl3-alpha2.

Thanks @RiccardoBlb im not sure if i would need use this patch somehow, but i understand it we use lwjgl3-alpha2, it just work witohut your patch.

Yes, you don’t need the patch for lwjgl3. I somehow assumed you wanted to use lwjgl2.

1 Like

i heard lwjgl2 is more stable, but were testing lwjgl3 before and had no issues. i will go back lwjgl2 with your patch if there will be problems.

thanks again :slight_smile:

So didn’t you remove setRenderer completely now?
Because that will pick the highest compat profile available

1 Like

oh, i thought JME use LWJGL_OPENGL2 as default. (or at least LWJGL2 itself, i just wrong interpret lwjgl/opengl default version)

thanks, good to know, i were wondering why removing this or changing to 33 had same result.