Hi everyone,
I’m wondering if the TestTessellationShader class works correctly for you.
When I first ran it, I encountered the following OpenGL error:
INFO: OpenGL Renderer Information
* Vendor: Intel
* Renderer: Intel(R) Iris(R) Xe Graphics
* OpenGL Version: 4.0.0 - Build 32.0.101.5763
* GLSL Version: 4.00 - Build 32.0.101.5763
* Profile: Core
[JME3] OpenGL debug message
ID: 1280
Source: API
Type: ERROR
Severity: HIGH
Message: Error has been generated. GL error GL_INVALID_ENUM in GetBooleanv: (ID: 659224037) Generic error
java.lang.Exception: Stack trace
at java.base/java.lang.Thread.dumpStack(Thread.java:2209)
at com.jme3.system.lwjgl.LwjglGLDebugOutputHandler.handleMessage(LwjglGLDebugOutputHandler.java:76)
at org.lwjgl.opengl.GL11.nglGetBooleanv(Native Method)
at org.lwjgl.opengl.GL11.glGetBoolean(GL11.java:1321)
at com.jme3.renderer.lwjgl.LwjglGL.glGetBoolean(LwjglGL.java:287)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at com.jme3.renderer.opengl.GLDebug.invoke(GLDebug.java:107)
After some online searching and Java debugging, I temporarily resolved this by setting gammaCorrection = false
in the initial settings. This could be a potential bug in the GLRenderer
class, I will come back to it after I fix the shader problems.
public static void main(String[] args) {
TestTessellationShader app = new TestTessellationShader();
AppSettings settings = new AppSettings(true);
settings.setRenderer(AppSettings.LWJGL_OPENGL40);
settings.setGammaCorrection(false); // <--
app.setSettings(settings);
app.start();
}
Now the error message is as follows:
[JME3] OpenGL debug message
ID: 1
Source: SHADER_COMPILER
Type: ERROR
Severity: HIGH
Message: SHADER_ID_LINK error has been generated. GLSL link failed for program 1, "": Varying "gl_PerVertex;_IN" has different block does not match across different shaders.
java.lang.Exception: Stack trace
at java.base/java.lang.Thread.dumpStack(Thread.java:2209)
at com.jme3.system.lwjgl.LwjglGLDebugOutputHandler.handleMessage(LwjglGLDebugOutputHandler.java:76)
at org.lwjgl.opengl.GL20.nglLinkProgram(Native Method)
at org.lwjgl.opengl.GL20.glLinkProgram(GL20.java:290)
at com.jme3.renderer.lwjgl.LwjglGL.glLinkProgram(LwjglGL.java:347)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at com.jme3.renderer.opengl.GLDebug.invoke(GLDebug.java:107)
at jdk.proxy1/jdk.proxy1.$Proxy0.glLinkProgram(Unknown Source)
at com.jme3.renderer.opengl.GLRenderer.updateShaderData(GLRenderer.java:1705)
at com.jme3.renderer.opengl.GLRenderer.setShader(GLRenderer.java:1751)
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:1114)
at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:842)
at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:772)
at com.jme3.renderer.queue.RenderQueue.renderGeometryList(RenderQueue.java:273)
at com.jme3.renderer.queue.RenderQueue.renderQueue(RenderQueue.java:315)
at com.jme3.renderer.RenderManager.renderViewPortQueues(RenderManager.java:1117)
at com.jme3.renderer.RenderManager.flushQueue(RenderManager.java:1012)
at com.jme3.renderer.pipeline.ForwardPipeline.pipelineRender(ForwardPipeline.java:117)
at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:1313)
at com.jme3.renderer.RenderManager.render(RenderManager.java:1355)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:283)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:163)
at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:246)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:245)
at java.base/java.lang.Thread.run(Thread.java:1583)
mag 24, 2025 1:25:18 PM com.jme3.app.LegacyApplication handleError
SEVERE: Uncaught exception thrown in Thread[#37,jME3 Main,5,main]
com.jme3.renderer.RendererException: Shader failed to link, shader:Shader[numSources=4, numUniforms=2, numBufferBlocks=0, shaderSources=[ShaderSource[name=Materials/Tess/SimpleTess.frag, defines, type=Fragment, language=GLSL400], ShaderSource[name=Materials/Tess/SimpleTess.vert, defines, type=Vertex, language=GLSL400], ShaderSource[name=Materials/Tess/SimpleTess.tsctrl, defines, type=TessellationControl, language=GLSL400], ShaderSource[name=Materials/Tess/SimpleTess.tseval, defines, type=TessellationEvaluation, language=GLSL400]]]
Varying "gl_PerVertex;_IN" has different block does not match across different shaders.
at com.jme3.renderer.opengl.GLRenderer.updateShaderData(GLRenderer.java:1738)
at com.jme3.renderer.opengl.GLRenderer.setShader(GLRenderer.java:1751)
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:1114)
at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:842)
at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:772)
at com.jme3.renderer.queue.RenderQueue.renderGeometryList(RenderQueue.java:273)
at com.jme3.renderer.queue.RenderQueue.renderQueue(RenderQueue.java:315)
at com.jme3.renderer.RenderManager.renderViewPortQueues(RenderManager.java:1117)
at com.jme3.renderer.RenderManager.flushQueue(RenderManager.java:1012)
at com.jme3.renderer.pipeline.ForwardPipeline.pipelineRender(ForwardPipeline.java:117)
at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:1313)
at com.jme3.renderer.RenderManager.render(RenderManager.java:1355)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:283)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:163)
at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:246)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:245)
at java.base/java.lang.Thread.run(Thread.java:1583)
Here’s the shader files:
Materials Tess
Has anyone run into this second issue, or do you have any ideas what might be going on? Any help would be greatly appreciated!
Cheers