Compare to Legacy Shader, Surface Shader unifies the shader process and exposes fewer details to the shader writers. Therefore, starting from version 3.72, Surface Shader appears as the default 'builtin-standard'.
However, both Legacy Shader and Surface Shader have their pros and cons.
|Legacy Shader||More flexible when facing special requirements||Exposes too many details to the users, makes it difficult to maintain when the engine is upgraded|
|Surface Shader||Unified shading process, no need to worry about details; User-level code is easier to maintain when the engine is upgraded||Need to well-understand the whole implementation mechanism to master;Limited customizable features|
In addition, the
builtin-unit.effect offered by the engine still uses part of the legacy shader library.
Mastering Legacy Shader can also help you to understand more implementation details of Cocos Shaders.