模板缓冲区只能在几何图形绘制期间通过一些硬编码规则填充(例如深度缓冲区),或者是否可以在全屏片段着色器的帮助下以编程方式完全填充它,例如可以绘制黑色-基于某些 2D SDF 的白色形状?
在这种情况下是否可以使用与深度缓冲区分开的模板缓冲区,并且根本不使用深度缓冲区?
您可以从片段函数中输出
[[stencil]]
装饰值,根据Metal Shading Language规范表5.7,该值将作为模板参考值,然后以模板始终成功的方式设置MTLDepthStencilState
。并设置操作为MTLStencilOperationReplace
,即
用模板参考值替换模板值,[...]
这应该使模板能够被片段功能有效地输出。