I would need one of the GFX engineers to come and answer on what has specifically changed on Diffuse and Specular between the engine versions and how to migrate.
Have you checked against the latest engine version with your test project?(https://playcanvas.com/project/1021266 is private so I can’t access it to check myself?) It’s possible we’ve made fixes/changes based on reports over the versions.
If this does still happen with the latest version of the engine, this looks more like a bug and we need to investigate.
However, I can give some information across the other points mentioned above.
At PlayCanvas, we will ensure that our engine is as backwards compatible as it can be and have tests in place for areas such as rendering where image diff between engine versions (as seen in this video Improvements and changes to Shader Chunks - PlayCanvas Bytes Jul 6 '22 - YouTube)
The exception has been with version 1.55 where we had to make the difficult choice to make a large number of changes and refactoring to build a much stronger foundation going forward with our shaders. This unfortunately caused issues for some developers (including yourself) that we’ve addressed or fixed in a later engine release.
This refactor has allowed us to support all the glTF 2.0 materials to the standard and has paved the way to make shader development easier, both via code and in the future a shader node based graph editor
With GLB import Editor support in progress, this would mean that as long as the GLB conforms to the glTF 2.0 spec, materials would be setup correctly on import as well, improving the asset workflow pipeline.
Updates to shaders (if you have custom shader chunks) have been documented here as well.
When it comes to material migration, (assuming it isn’t a bug), it is possible that we could use the Editor API to write a small code snippet that will set the properties for the material assets rather than needing to do it by hand.
As a short term workaround, it is possible to run the Editor with an older version of the Engine but is not an end user supported feature and is meant to be used by us for debugging.
This is because the Editor may depend on Engine API that is in the current version of the Engine to render in the viewport.
Use the same use_local_engine
URL param for the Editor (eg https://playcanvas.com/editor/scene/1004487?use_local_engine=https://code.playcanvas.com/playcanvas-1.54.1.js)