Version: Unity 6.7 Alpha (6000.7)
Language : English
Introduction to surface shaders in the Built-In Render Pipeline
Surface Shaders and rendering paths in the Built-In Render Pipeline

Surface Shader output structures in the Built-In Render Pipeline

Important: The Built-In Render Pipeline is deprecated and will be made obsolete in a future release.
It remains supported, including bug fixes and maintenance, through the full Unity 6.7 LTS lifecycle.
For more information on migration, refer to Migrating from the Built-In Render Pipeline to the Universal Render Pipeline and Render pipeline feature comparison.

Standard output structure of surface shaders is this:

struct SurfaceOutput
{
    half3 Albedo;   // diffuse color
    half3 Normal;   // tangent space normal, if written
    half3 Emission;
    half Specular;  // specular power in 0..1 range
    half Gloss; // specular intensity
    half Alpha; // alpha for transparencies
};

In Unity 5, surface shaders can also use physically based lighting models. Built-in Standard and StandardSpecular lighting models (see below) use these output structures respectively:

struct SurfaceOutputStandard
{
    half3 Albedo;       // base (diffuse or specular) color
    half3 Normal;       // tangent space normal, if written
    half3 Emission;
    half Metallic;      // 0=non-metal, 1=metal
    half Smoothness;    // 0=rough, 1=smooth
    half Occlusion;     // occlusion (default 1)
    half Alpha;     // alpha for transparencies
};
struct SurfaceOutputStandardSpecular
{
    half3 Albedo;       // diffuse color
    half3 Specular; // specular color
    half3 Normal;       // tangent space normal, if written
    half3 Emission;
    half Smoothness;    // 0=rough, 1=smooth
    half Occlusion;     // occlusion (default 1)
    half Alpha;     // alpha for transparencies
};
Introduction to surface shaders in the Built-In Render Pipeline
Surface Shaders and rendering paths in the Built-In Render Pipeline