Stencil buffer(模板缓冲区)是图形渲染管线中的一种辅助缓冲区,用来为每个像素存储一个小整数标记(常见为 8 位)。渲染时可通过“模板测试”根据该标记决定某个像素是否允许被绘制,从而实现遮罩/裁剪、镜面反射区域限制、轮廓描边、门户/传送门效果等。它通常与深度缓冲(depth buffer)并列使用,但用途不同。
/ˈstɛnsəl ˈbʌfər/
The stencil buffer lets us mask out parts of the screen.
模板缓冲区让我们可以把屏幕的某些区域遮罩掉,不进行绘制。
By writing values into the stencil buffer first, the engine restricts later lighting passes to only the marked pixels, improving performance.
先向模板缓冲区写入标记值,渲染引擎就能把后续光照计算限制在被标记的像素上,从而提升性能。
Stencil 原指“模板/镂空板”,来自中世纪法语与日耳曼语系词源,含“用固定图案去印刷或涂绘”的意思;在计算机图形学中引申为“用于限制绘制区域的模板”。Buffer 来自法语 buffer(缓冲、减震),在计算机领域指“用于暂存数据的缓冲区”。合在一起,stencil buffer字面即“用作模板的缓冲区”,强调它存的是“控制是否可画”的标记,而不是颜色或深度本身。