Sign in to follow this  
Kyu

Modern renderer issues GLSL and FBO on Intel Graphics

Recommended Posts

It seems Wurm low memory requires GLSL 3.30 to work, so it crashes out of the box with Intel Graphics and Mesa driver:

Startup Phase - Preparing terrain...
WARNING: Unable to compile vertex shader (shader.static_gbuffer.vertex): class.A3k28Y8oS0: 0:1(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, 3.00 ES, 3.10 ES, and 3.20 ES
WARNING: Unable to compile pixel shader (shader.static_gbuffer.fragment): class.A3k28Y8oS0: 0:1(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, 3.00 ES, 3.10 ES, and 3.20 ES
Unable to load material program: material.gbuffer.static : program.static_gbuffer
Execution aborted at connection 0, iteration 0
Run time 0s, local time Tue Aug 21 21:51:03 ICT 2018
Destroying game window
====== CLIENT CRASH ======

 

My CPU is an Intel Skylake m3-6y30 with Intel HD Graphics 515 running Linux kernel 3.18, Mesa driver 18.0.5 and Oracle Java 8 (Update 181).

 

OpenGL information from $ glxinfo | grep -E 'OpenGL|Max':

    Max core profile version: 4.5
    Max compat profile version: 3.0
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 515 (Skylake GT2) 
OpenGL core profile version string: 4.5 (Core Profile) Mesa 18.0.5
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 18.0.5
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 18.0.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

 

So, my system is indeed GLSL 3.30 (even 4.5) capable. However, by forcing OpenGL 4.5 (with $ MESA_GL_VERSION_OVERRIDE=4.5 javaws wurmclient_lowmem.jnlp) , I found the following bug/crash with the frame buffer:

Gui initialized
Startup Phase - Preparing terrain...
Could not complete GBuffer
FBO turned incomplete: 36061 (0x8cdd)
Could not bind GBuffer
Execution aborted at connection 0, iteration 0
Run time 0s, local time Tue Aug 21 22:33:10 ICT 2018
Destroying game window
====== FAILED ASSERT ======
com.wurmonline.client.fgtPPuD8uC: FBO not bound.
	at com.wurmonline.client.fgtPPuD8uC.mMV5oPkCW(SourceFile:63)
	at class.QfeUX7dGdb.XwhlvVTrl(SourceFile:209)
	at class.QfeUX7dGdb.mMV5oPkCW(SourceFile:168)
	at class.Dbupj67nuE.FZOk5L6Gfy(SourceFile:540)
	at class.EPsVafdUz7.<init>(SourceFile:275)
	at com.wurmonline.client.WurmClientBase.run(SourceFile:38279)
	at java.lang.Thread.run(Thread.java:748)

 

Some workarounds:

 

Well, the easiest way is to disable GLSL in Wurm setting (Compatibility tab), however the trade-off is that I can no longer use "Place items" feature, and the animation seem to be turned down (eg. grass does not move as much as it usually does under strong wind).

 

Another workaround is to force OpenGL 4.5 like above and also disable FBO (while keeping GLSL enabled), I can use "Place items" again and the animation is improved (grass moves more under wind) with some trade-off to the frame rate.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this