jMonkeyEngine v3.7.0-alpha2 release

Hi Everyone,
jMonkeyEngine v3.7.0-alpha2 is available for testing. I would like to remind that it will enter a feature freeze phase on Monday, Mar-11-2024 at that point a release branch will be created where we can run our tests and prepare for production.
There is a release page containing the engine updates which are included in this version (related to Alpha1 ).
While in feature freeze phase, new features / fixes can be streamed to “master” branch as usual but only fixes to features included in the coming release will also go to the release branch and eventually to production.

Cheers! :slight_smile:

12 Likes

When I change my jme3 version from 3.6.1-stable to 3.7.0-alpha2, I get errors when I run my application (and it doesn’t work)

Mar 07, 2024 10:31:04 PM com.jme3.system.JmeDesktopSystem initialize
INFO: Running on jMonkeyEngine 3.7.0-alpha2
 * Branch: HEAD
 * Git Hash: e584cb1
 * Build Date: 2024-03-04
Mar 07, 2024 10:31:06 PM com.jme3.renderer.opengl.GLRenderer loadCapabilitiesCommon
INFO: OpenGL Renderer Information
 * Vendor: ATI Technologies Inc.
 * Renderer: Radeon RX 570 Series
 * OpenGL Version: 4.6.14802 Compatibility Profile Context 21.12.1 30.0.14011.3017
 * GLSL Version: 4.60
 * Profile: Compatibility
Mar 07, 2024 10:31:06 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: LWJGL 2.9.5 context running on thread jME3 Main
 * Graphics Adapter: igdumdim64
 * Driver Version: 20.19.15.4531
 * Scaling Factor: 1
Libbulletjme version 18.5.2 initializing
Mar 07, 2024 10:31:08 PM com.jme3.renderer.opengl.GLRenderer updateShaderSourceData

Mar 07, 2024 10:31:08 PM com.jme3.app.LegacyApplication handleError
SEVERE: Uncaught exception thrown in Thread[jME3 Main,6,main]
com.jme3.renderer.RendererException: compile error in: ShaderSource[name=Common/MatDefs/Shadow/PostShadowFilter15.frag, defines, type=Fragment, language=GLSL150]
Fragment shader failed to compile with the following errors:
WARNING: 0:11: warning(#62) enable/warn/disable extension is not found. Extension "GL_OES_gpu_shader5" is not supported
ERROR: 0:17: error(#228) Type should be float or int
ERROR: 0:18: error(#228) Type should be float or int
ERROR: 0:19: error(#228) Type should be float or int
ERROR: 0:20: error(#228) Type should be float or int
ERROR: 0:21: error(#228) Type should be float or int
ERROR: error(#273) 5 compilation errors.  No code generated


	at com.jme3.renderer.opengl.GLRenderer.updateShaderSourceData(GLRenderer.java:1658)
	at com.jme3.renderer.opengl.GLRenderer.updateShaderData(GLRenderer.java:1685)
	at com.jme3.renderer.opengl.GLRenderer.setShader(GLRenderer.java:1750)
	at com.jme3.material.logic.DefaultTechniqueDefLogic.render(DefaultTechniqueDefLogic.java:97)
	at com.jme3.material.Technique.render(Technique.java:168)
	at com.jme3.material.Material.render(Material.java:1090)
	at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:695)
	at com.jme3.post.FilterPostProcessor.renderProcessing(FilterPostProcessor.java:235)
	at com.jme3.post.FilterPostProcessor.renderFilterChain(FilterPostProcessor.java:321)
	at com.jme3.post.FilterPostProcessor.postFrame(FilterPostProcessor.java:342)
	at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:1238)
	at com.jme3.renderer.RenderManager.render(RenderManager.java:1292)
	at com.jme3.app.SimpleApplication.update(SimpleApplication.java:283)
	at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:163)
	at com.jme3.system.lwjgl.LwjglCanvas.runLoop(LwjglCanvas.java:231)
	at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:245)
	at java.base/java.lang.Thread.run(Thread.java:833)

Mar 07, 2024 10:31:08 PM com.jme3.system.JmeSystemDelegate lambda$new$0
WARNING: JmeDialogsFactory implementation not found.
Uncaught exception thrown in Thread[jME3 Main,6,main]
RendererException: compile error in: ShaderSource[name=Common/MatDefs/Shadow/PostShadowFilter15.frag, defines, type=Fragment, language=GLSL150]
Fragment shader failed to compile with the following errors:
WARNING: 0:11: warning(#62) enable/warn/disable extension is not found. Extension "GL_OES_gpu_shader5" is not supported
ERROR: 0:17: error(#228) Type should be float or int
ERROR: 0:18: error(#228) Type should be float or int
ERROR: 0:19: error(#228) Type should be float or int
ERROR: 0:20: error(#228) Type should be float or int
ERROR: 0:21: error(#228) Type should be float or int
ERROR: error(#273) 5 compilation errors.  No code generated
2 Likes

I realised I should probably post the whole error.
Here is a pastebin link:

My guess is that it is using GLSL150 when it should be using GLSL300

2 Likes

Do you define your own material definitions (.j3md files)?

I don’t define my own material definitions (I wouldn’t know how)

1 Like

Are you using any 3rd-party libraries (such as Heart, SkyControl, or jme-ttf) that might include material definitions?

I’m asking because I’ve seen JME 3.6 material definitions trigger crashes with 3.7 similar to the one you saw.

I use SkyControl, Minie, Blocks.

I removed SkyControl and still got the same crash.

1 Like

I’m not shader expert, but I believe Blocks needs to be updated for JME 3.7, since its material definitions list the GLSL versions out of order. For instance:

Recent experience suggests that, for JME 3.7 at least, material definitions should list GLSL versions in descending order.

On the other hand, I don’t think the J3MDs in Blocks explains the crash you saw, since the crash specifically mentions “PostShadowFilter15.frag”, which doesn’t appear to be used in Blocks. The only place I know “PostShadowFilter15.frag” is used is in jme3-core, specifically:

Those lines look peculiar to me because they don’t specify shaders for GLSL100.
@riccardoblb could you please help straighten us out?

This seems related to the precision qualifiers that are now set in the GLSLCompat file

  precision highp float;
  precision highp int;

As per opengl docs

Precision qualifiers in GLSL are supported for compatibility with OpenGL ES. They use the same syntax as ES’s qualifiers, but they have no functional effects. Do not use them unless you want your shaders to be ES compatible.

It seems the driver in question doesn’t agree with that… i’ve prepared a patch: Use precision qualifiers only in GL ES shaders by riccardobl · Pull Request #2217 · jMonkeyEngine/jmonkeyengine · GitHub

8 Likes

Thank you, Riccardo!

That worked. Thanks :grinning:

1 Like