Since engine version 1.55.0, the standard shader renders differently than before. We’ve tracked down this change in the chunk combineDiffuseSpecular
, which looks like the culprit.
Previously, the more specular you had, the less diffuse you’d get. Now diffuse and specular is added, which produces a wildly different result than before. Compare materials that are using a combination of high specular and high diffuse:
Here’s the project we used for testing the above materials. Compare the look when launching version 1.54.1 vs version 1.55.0.
This change has affected all our projects, since the Playcanvas editor always runs the latest engine version. This means we have to tweak all our previous materials (hundreds, if not thousands!) in all our projects, and that’s not something we or our customers expected to pay for.
Also, our apps are often based on a fixed Playcanvas engine version. And since the editor is always using the latest version, we now get a mis-match between what artists create in the editor, and what our apps look like (since they’re using different shaders). This makes it impossible for artists to see what they’re working on - kind of a big deal! To get visual parity between the editor and the apps, we’re forced to update the apps versions as well, which brings even more changes to the API, which means we have to re-write parts of our apps.
As you can imagine, this is not a sustainable way to work. We need to be able to work from a stable foundation, and that’s impossible if the tools we’re using are changing when working on a project. If we could choose what version of the engine a playcanvas project was using (the entire editor, not just when launching), this wouldn’t be a problem.
What’s the correct way forward here? We currently don’t see any other alternative than to use the latest version, since that’s what the editor uses. However, then we’d still need to tweak all our previous materials so that they look like they did before. How can we “migrate” our materials to recreate the old look with this new shader?