In WebGL 2, we can manually set our own custom values to the depth buffer (z-buffer). This feature allows you to manipulate the depth of a fragment from the fragment shader. This can be expensive, because it forces the GPU to bypass a lot of it's normal fragment discard behavior, but can also allow for some interesting effects that would be difficult to accomplish without having incredibly high poly geometry.