The special shader that Unity uses depends on the reason that Unity can’t use the original shader.
Unity renders an object with the default error shader when there’s a problem with that object’s material or shader; for example, if no material is assigned, if the shader doesn’t compile, or if the shader isn’t supported.
Unity uses the default error shader in the Unity Editor, and in builds.
The default error shader is magenta (bright pink).
Unity renders an object with the loading shader to indicate that Unity is compiling the shader variantA verion of a shader program that Unity generates according to a specific combination of shader keywords and their status. A Shader object can contain multiple shader variants. More info
See in Glossary needed to display that object.
Unity shows the loading shader in the Unity Editor when asynchronous shader compilation is enabled, or in a development buildA development build includes debug symbols and enables the Profiler. More info
See in Glossary when Shader Live Link support is enabled.
The loading shader is cyan (bright blue).