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.
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
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.