Nov 22, 2017

Output Structs for Unity Shaders Used in Unity 5.x

The way shaders allow you to communicate the rendering properties of your material to their lighting model is via a surface output. It is basically a wrapper around all the parameters that the current lighting model needs. It should not surprise you that different lighting models have different surface output structs. The following table shows the three main output structs used in Unity 5 and how they can be used:

The SurfaceOutput struct has the following properties:
  • fixed3 Albedo;:  This is the diffuse color of the material
  • fixed3 Normal;:  This is the tangent space normal, if written
  • fixed3 Emission;: This is the color of the light emitted by the material (this property is    declared as half3 in the Standard Shaders)
  • fixed Alpha;: This is the transparency of the material
  • half  Specular;: This is the specular power from 0 to 1
  • fixed Gloss;: This is the specular intensity 
The SurfaceOutputStandard struct has the following properties:
  • fixed3 Albedo;: This is the base color of the material(whether it’s diffuse or specular)
  • fixed3 Normal;
  • half3 Emission;: This property is declared as half3, while it was defined as fixed in  SurfaceOutput
  • fixed Alpha;
  • half Occlusion;: This is the occlusion (default  1)
  • half Smoothness;: This is the smoothness (0  =  rough, 1 =  smooth)
  • half Metallic;: 0 =  non-metal, 1 = metal
The SurfaceOutputStandardSpecular struct has the following properties:
  • fixed3 Albedo;.
  • fixed3 Normal;.
  • half3 Emission;.
  • fixed Alpha;.
  • half Occlusion;.
  • half Smoothness;.
  • fixed3 Specular;: This is the specular color. This is very different from the Specular    property in SurfaceOutput as it allows specifying a color rather than a single value.
Using a Surface Shader correctly is a matter of initializing the surface output with the correct values.

No comments:

Post a Comment