engine: 'occludeSpecular' : no matching overloaded function found
I am still using playcanvas-gltf (or rather a modified version of that), but with the latest rewrites in the engine some shaders fail to compile:
One full error:
Failed to compile fragment shader:
ERROR: 0:486: 'occludeSpecular' : no matching overloaded function found
481: dAtten *= getLightDiffuse();
482: dDiffuseLight += dAtten * light0_color;
483: dSpecularLight += getLightSpecular() * dAtten * light0_color;
484:
485:
486: occludeSpecular();
487:
488: gl_FragColor.rgb = combineColor();
489:
490: gl_FragColor.rgb += dEmission;
491: gl_FragColor.rgb = addFog(gl_FragColor.rgb);
Different glTF models produce different errors:

Now I wonder if backwards-compatibility is abandoned or should the engine still support these shaders?
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 15 (11 by maintainers)
playcanvas-gltf e.g. has no typing/Intellisense enabled, but then again, it is also obsolete.
Right, my idea was just that once we know a property is a string for example, it shouldn’t be allowed to assign a number / bool anymore?
It could be just in a
Debug.call(() => { ... });Right now this is just a could-be-nice-to-have-in-few-situations-that-may-or-may-not-occur for me, otherwise @slimbuck fixed the issue 💯 👍 Right now I don’t have such situations luckily 😅
Ahh interesting. A week ago I found and fixed a bug in glb-parser.js which was setting occludeSpecular flag incorrectly here.
Looks like the bug originated in playcanvas-gltf.
In general I wonder how how the chunk system should handle invalid parameters like this…
Looks like this is triggered from adding a height map to a standard material (for parallax mapping)?
Which version of the engine are you using? 1.54.1? What was the last version of the engine that the shader worked on?