How many passes are in this material (Read Only).
This is mostly used in direct drawing code using GL class. For example, Image Effects use materials for implementing screen post-processing. For each pass in the material they activate the pass (see SetPass) and draw a fullscreen quad.
Here is an example of a full image effect that inverts the colors. Add this script to the camera and see it in play mode.
private var mat : Material;
function Start () {
mat = new Material (
"Shader \"Hidden/Invert\" {" +
"SubShader {" +
" Pass {" +
" ZTest Always Cull Off ZWrite Off" +
" SetTexture [_RenderTex] { combine one-texture }" +
" }" +
"}" +
"}"
);
}
function OnRenderImage (source : RenderTexture, dest : RenderTexture) {
RenderTexture.active = dest;
source.SetGlobalShaderProperty ("_RenderTex");
GL.PushMatrix ();
GL.LoadOrtho ();
// for each pass in the material (one in this case)
for (var i = 0; i < mat.passCount; ++i) {
// activate pass
mat.SetPass (i);
// draw a quad
GL.Begin( GL.QUADS );
GL.TexCoord2( 0, 0 ); GL.Vertex3( 0, 0, 0.1 );
GL.TexCoord2( 1, 0 ); GL.Vertex3( 1, 0, 0.1 );
GL.TexCoord2( 1, 1 ); GL.Vertex3( 1, 1, 0.1 );
GL.TexCoord2( 0, 1 ); GL.Vertex3( 0, 1, 0.1 );
GL.End();
}
GL.PopMatrix ();
}
See Also: SetPass function, GL class, ShaderLab documentation.