EXT_polygon_offset_clamp extension
The EXT_polygon_offset_clamp extension is part of the WebGL API and adds a limit to the depth offset set with polygonOffset().
The depth offset of a polygon grows with its slope, so polygons that are almost parallel to the view direction can get very large offsets. In shadow mapping, this can push shadow-casting polygons behind the surfaces they should shadow, which shows up as holes in the shadows. Limiting the offset to a maximum value avoids this.
WebGL extensions are available using the WebGLRenderingContext.getExtension() method. For more information, see also Using Extensions in the WebGL tutorial.
Constants
ext.POLYGON_OFFSET_CLAMP_EXT-
A
GLenumto pass togetParameter()to get the current offset limit, as aGLfloat. The default value is0.
Instance methods
ext.polygonOffsetClampEXT()-
Sets the scale factor and units used to calculate depth offsets, and a limit for the resulting offset.
Examples
>Limiting the depth offset
The depth offset applies only when gl.POLYGON_OFFSET_FILL is enabled. This example sets the same factor and units as polygonOffset(2, 3) would, and also limits the offset to 0.001:
const ext = gl.getExtension("EXT_polygon_offset_clamp");
gl.enable(gl.POLYGON_OFFSET_FILL);
ext.polygonOffsetClampEXT(2, 3, 0.001);
gl.getParameter(ext.POLYGON_OFFSET_CLAMP_EXT); // 0.0010000000474974513
The value is stored as a 32-bit float, so it reads back as the nearest 32-bit value to 0.001.
Specifications
| Specification |
|---|
| WebGL EXT_polygon_offset_clamp Extension Specification> |