files/en-us/web/api/webglrenderingcontext/stencilfunc/index.md
{{APIRef("WebGL")}}{{AvailableInWorkers}}
The WebGLRenderingContext.stencilFunc() method of the WebGL API sets the front and back function
and reference value for stencil testing.
Stenciling enables and disables drawing on a per-pixel basis. It is typically used in multipass rendering to achieve special effects.
stencilFunc(func, ref, mask)
func
gl.ALWAYS. The possible values are:
gl.NEVER: Never pass.gl.LESS: Pass if
(ref & mask) < (stencil & mask).gl.EQUAL: Pass if
(ref & mask) = (stencil & mask).gl.LEQUAL: Pass if
(ref & mask) <= (stencil & mask).gl.GREATER: Pass if
(ref & mask) > (stencil & mask).gl.NOTEQUAL: Pass if
(ref & mask) !== (stencil & mask).gl.GEQUAL: Pass if
(ref & mask) >= (stencil & mask).gl.ALWAYS: Always pass.ref
mask
None ({{jsxref("undefined")}}).
The stencil testing is disabled by default. To enable or disable stencil testing, use
the {{domxref("WebGLRenderingContext.enable", "enable()")}} and
{{domxref("WebGLRenderingContext.disable", "disable()")}} methods with the argument
gl.STENCIL_TEST.
gl.enable(gl.STENCIL_TEST);
gl.stencilFunc(gl.LESS, 0, 0b1110011);
To get the current stencil function, reference value, or other stencil information, query the following constants with {{domxref("WebGLRenderingContext.getParameter", "getParameter()")}}.
gl.getParameter(gl.STENCIL_FUNC);
gl.getParameter(gl.STENCIL_VALUE_MASK);
gl.getParameter(gl.STENCIL_REF);
gl.getParameter(gl.STENCIL_BACK_FUNC);
gl.getParameter(gl.STENCIL_BACK_VALUE_MASK);
gl.getParameter(gl.STENCIL_BACK_REF);
gl.getParameter(gl.STENCIL_BITS);
{{Specifications}}
{{Compat}}