Version: 2019.4
Platform-specific rendering differences
Using texture arrays in shaders

ShaderLab: SubShader LOD value

This page contains information on level of detail (LOD) for shadersA small script that contains the mathematical calculations and algorithms for calculating the Color of each pixel rendered, based on the lighting input and the Material configuration. More info
See in Glossary
. For information on LOD for meshes, see Level of detail (LOD) for meshes.

You can assign a LOD (level of detail) value to a SubShader. This value indicates how computationally demanding its shader programs are. At runtime, you can tell Unity to exclude SubShadersEach shader in Unity consists of a list of subshaders. When Unity has to display a mesh, it will find the shader to use, and pick the first subshader that runs on the user’s graphics card. More info
See in Glossary
above a given LOD value, so that Unity falls back to using SubShaders that have a lower LOD value.

You can use this technique to fine-tune shader performance on different hardware. This is useful when a SubShader is theoretically supported by a user’s hardware, but the hardware is not capable of running it well.

Setting the maximum LOD value

You can set the maximum LOD for an individual shader using Shader.maximumLOD, or globally for all shaders using Shader.globalMaximumLOD. By default, there is no maximum LOD.

Note that although this technique is named after the LODThe Level Of Detail (LOD) technique is an optimization that reduces the number of triangles that Unity has to render for a GameObject when its distance from the Camera increases. Each LOD level has either a Mesh with a Mesh Renderer component (Mesh LOD level) or a Billboard Asset with a Billboard Renderer component (Billboard LOD level). Typically a single GameObject has three or four Mesh LOD levels and one optional Billboard LOD level to represent the same GameObject with decreasing detail in the geometry. More info
See in Glossary
feature for renderingThe process of drawing graphics to the screen (or to a render texture). By default, the main camera in Unity renders its view to the screen. More info
See in Glossary
meshes, there are important differences: Unity does not calculate SubShader LOD automatically, and this feature does not relate to distance from the CameraA component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. More info
See in Glossary
. You must set the maximum LOD manually.

LOD values for legacy shaders

Unity’s built-in legacy shaders have the following LOD values:

LOD value Shader name
100 VertexLit
150 Decal
Reflective VertexLit
200 Diffuse
250 Diffuse Detail
Reflective Bumped Unlit
Reflective Bumped VertexLit
300 Bumped
400 Bumped Specular
500 Parallax
600 Parallax Specular
Platform-specific rendering differences
Using texture arrays in shaders