The default skybox shader (RenderFX/Skybox) takes 6 cube face textures and specifies 6 passes (1 for each cube face). In each pass it renders a different side of the skybox cube.

I thought that each pass of a shader would redraw the exact same geometry per pass. Is rendering unique geometry in each pass a special case for the skybox, or something that can generally be done with any shader and/or mesh?

Empirically, yes.

Test case: I grabbed the default procedural skybox shader and added a number of these “empty” passes to the end of it:

```
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
struct appdata_t { float4 vertex : POSITION; };
struct v2f { float4 vertex : SV_POSITION; };
v2f vert(appdata_t v) {v2f o;o.vertex = UnityObjectToClipPos(v.vertex);return o;}
half4 frag(v2f i) : COLOR { discard; return (float4)0;}
ENDCG
}
```

If I add exactly 5 (for a total of 6 passes) the shader stops rendering correctly: it only renders one side of a cube. If I add 1-4 copies, or 6+ copies it continues to work correctly.

Additionally, normally Unity (5.6.0) renders the skybox with a spherical mesh that has 5040 verts (check the frame debugger or look at it under NSight). If I have exactly 6 passes, it switches from rendering that mesh to a 6-vert (2 tri) quad - one quad per side of a cube.