-
Notifications
You must be signed in to change notification settings - Fork 22.4k
/
index.md
96 lines (73 loc) · 2.89 KB
/
index.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
---
title: "WebGLRenderingContext: stencilFunc() method"
short-title: stencilFunc()
slug: Web/API/WebGLRenderingContext/stencilFunc
page-type: web-api-instance-method
browser-compat: api.WebGLRenderingContext.stencilFunc
---
{{APIRef("WebGL")}}
The **`WebGLRenderingContext.stencilFunc()`** method of the [WebGL API](/en-US/docs/Web/API/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.
## Syntax
```js-nolint
stencilFunc(func, ref, mask)
```
### Parameters
- `func`
- : A {{domxref("WebGL_API/Types", "GLenum")}} specifying the test function. The default function is
`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`
- : A {{domxref("WebGL_API/Types", "GLint")}} specifying the reference value for the stencil test. This
value is clamped to the range 0 to 2^n - 1 where n is the number of bitplanes
in the stencil buffer. The default value is 0.
- `mask`
- : A {{domxref("WebGL_API/Types", "GLuint")}} specifying a bit-wise mask that is used to AND the reference
value and the stored stencil value when the test is done. The default value is all 1.
### Return value
None ({{jsxref("undefined")}}).
## Examples
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`.
```js
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()")}}.
```js
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
{{Specifications}}
## Browser compatibility
{{Compat}}
## See also
- {{domxref("WebGLRenderingContext.stencilFuncSeparate()")}}
- {{domxref("WebGLRenderingContext.stencilMask()")}}
- {{domxref("WebGLRenderingContext.stencilMaskSeparate()")}}
- {{domxref("WebGLRenderingContext.stencilOp()")}}
- {{domxref("WebGLRenderingContext.stencilOpSeparate()")}}