PBRLighting reported an error when using UseInstancing

Hello everyone, PBRLighting cannot be optimized using InstancedNode and has reported an error. I can’t find a solution

The code is as follows:

public class TestPBRSimple extends SimpleApplication {
    private boolean REALTIME_BAKING = false;

    public static void main(String[] args) {
        new TestPBRSimple().start();
    }
    
    @Override
    public void simpleInitApp() {

        InstancedNode inst = new InstancedNode("inst");
        rootNode.attachChild(inst);

        
        Geometry model = (Geometry) assetManager.loadModel("Models/Tank/tank.j3o");
        MikktspaceTangentGenerator.generate(model);

        Material pbrMat = assetManager.loadMaterial("Models/Tank/tank.j3m");
        pbrMat.setBoolean("UseInstancing", true);
        model.setMaterial(pbrMat);
        inst.attachChild(model);
        inst.instance();

        ChaseCamera chaseCam = new ChaseCamera(cam, model, inputManager);
        chaseCam.setDragToRotate(true);
        chaseCam.setMinVerticalRotation(-FastMath.HALF_PI);
        chaseCam.setMaxDistance(1000);
        chaseCam.setSmoothMotion(true);
        chaseCam.setRotationSensitivity(10);
        chaseCam.setZoomSensitivity(5);
        flyCam.setEnabled(false);

        Spatial sky = SkyFactory.createSky(assetManager, "Textures/Sky/Path.hdr", SkyFactory.EnvMapType.EquirectMap);
        rootNode.attachChild(sky);

        // Create baker control
        EnvironmentProbeControl envProbe=new EnvironmentProbeControl(assetManager,256);
        rootNode.addControl(envProbe);
       
        // Tag the sky, only the tagged spatials will be rendered in the env map
        envProbe.tag(sky);


        
    }
    

    float lastBake = 0;
    @Override
    public void simpleUpdate(float tpf) {
        if (REALTIME_BAKING) {
            lastBake += tpf;
            if (lastBake > 1.4f) {
                rootNode.getControl(EnvironmentProbeControl.class).rebake();
                lastBake = 0;
            }
        }
    }
}

Error message:

com.jme3.renderer.RendererException: compile error in: ShaderSource[name=Common/MatDefs/Light/PBRLighting.vert, defines, type=Vertex, language=GLSL150]
ERROR: 0:724: ‘Use_the_instancing_functions_for_this’ : undeclared identifier

at com.jme3.renderer.opengl.GLRenderer.updateShaderSourceData(GLRenderer.java:1659)
at com.jme3.renderer.opengl.GLRenderer.updateShaderData(GLRenderer.java:1686)
at com.jme3.renderer.opengl.GLRenderer.setShader(GLRenderer.java:1751)
at com.jme3.material.logic.SinglePassAndImageBasedLightingLogic.render(SinglePassAndImageBasedLightingLogic.java:277)
at com.jme3.material.Technique.render(Technique.java:168)
at com.jme3.material.Material.render(Material.java:1099)
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)

ERROR: 0:724: ‘Use_the_instancing_functions_for_this’ : undeclared identifier

at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:245)
at java.base/java.lang.Thread.run(Thread.java:842)

724 wPosition = (g_WorldMatrix * vec4(inPosition, 1.0)).xyz;

1 Like

Are you using version 3.8.0-stable?

If so, then there is now a 3.8.1-stable release that should resolve this error if you update to that version.

1 Like

Running on jMonkeyEngine 3.8.0-SNAPSHOT

Thank you. I’m going to update v3.8.1-stable right now

2 Likes