Version: 2023.1
Language : English
ShaderLab command: Conservative
ShaderLab command: Offset

ShaderLab command: Cull

Sets which polygons the GPU should cull, based on the direction that they are facing relative to 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
.

Culling is the process of determining what not to draw. Culling improves rendering efficiency, by not wasting GPU time drawing things that would not be visible in the final image.

By default, the GPU performs back-face culling; this means that it does not draw polygons that face away from the viewer. In general, the more you can reduce the rendering workload, the better; you should therefore change this setting only when necessary.

Render pipeline compatibility

Feature name Built-in Render PipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info
See in Glossary
Universal Render Pipeline (URP) High Definition Render Pipeline (HDRP) Custom SRP
Cull Yes Yes Yes Yes

Usage

This command makes a change to the render state. Use it in a Pass block to set the render state for that Pass, or use it in a SubShader block to set the render state for all Passes in that SubShader.

Signature Example syntax Function
Cull <state> Cull Back Sets which polygons the GPU should cull, based on the direction that they face relative to the camera.

Valid parameter values

Parameter Value Function
state Back Cull polygons that face away from the camera. This is called back-face culling.

This is the default value.
Front Cull polygons that face towards the camera. This is called front-face culling.

Use this for turning geometry inside-out.
Off Do not cull polygons based on the direction that they face.

Use this for special effects, such as transparent objects or double-sided walls.

Examples

Shader "Examples/CommandExample"
{
    SubShader
    {
         // The rest of the code that defines the SubShader goes here.

        Pass
        {    
              // Disable culling for this Pass.
              // You would typically do this for special effects, such as transparent objects or double-sided walls.
              Cull Off
            
              // The rest of the code that defines the Pass goes here.
        }
    }
}

This example code demonstrates the syntax for using this command in a SubShader block.

Shader "Examples/CommandExample"
{
    SubShader
    {
         // Disable culling for this SubShader.
         // You would typically do this for special effects, such as transparent objects or double-sided walls.
         Cull Off

         // The rest of the code that defines the SubShader goes here.        

        Pass
        {    
              // The rest of the code that defines the Pass goes here.
        }
    }
}
ShaderLab command: Conservative
ShaderLab command: Offset