在几何图形绘制过程中,模具缓冲区是否只能由一些硬编码规则填充(如深度缓冲区),或者是否可以在全屏碎片着色器的帮助下以编程方式完全填充,例如,全屏碎片着色器可以基于一些2D SDF绘制黑白形状?
在这种情况下,是否可以使用独立于深度缓冲区的模板缓冲区,而完全不使用深度缓冲区?
您可以输出 [[stencil]] 来自fragment函数的装饰值,根据Metal Shading Language规范表5.7,该值将是模具参考值,然后设置 MTLDepthStencilState 在某种程度上模板总是成功的。并将操作设置为 MTLStencilOperationReplace ,这意味着
[[stencil]]
MTLDepthStencilState
MTLStencilOperationReplace
将模具值替换为模具引用值[…]
这应该使得模版被片段函数有效地输出。