Metal2新特性:光栅顺序组(ROG,Raster Order Groups)
Posted Mr_厚厚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Metal2新特性:光栅顺序组(ROG,Raster Order Groups)相关的知识,希望对你有一定的参考价值。
背景主题文章:【Metal引擎剖析(二):传统延迟渲染和TBDR】
1. Raster Order Groups的作用
ROG是干什么的呢?官方解释:准确的控制并行的fragment shader线程访问同一个像素的顺序。
通俗点说,就是我们在渲染场景物体的时候,有些前后重叠遮挡的物体身上的fragment shader可能会同时访问同一个坐标的那个像素数据,造成竞争,导致结果错误。而ROG就是用来同步这个像素的访问次序,防止竞争的发生。
这样解释可能还是不够直观,这里来看官方给出的一个例子。
假设有下面这种情况,镜头场景中有两个重叠的三角形,开发者代码中绘制的时候对于这种透明物体会按照从后往前的顺序绘制,也就是先调用后面蓝色三角形的draw call,然后再调用前面绿色三角形的draw call,Metal也会按照我们代码的顺序去执行draw call指令,这样看似乎这两次draw call是依次串行执行,但实际上并不是这样,GPU上的运算过程是高度并行的,虽然CPU发出的指令是先绘制蓝三角形,但在GPU上Metal并不能保证蓝三角形的fragment shader会比绿三角形的先执行,Metal只能保证在blend混合的时候是按照draw call的顺序执行的,如下图所示:
以上是关于Metal2新特性:光栅顺序组(ROG,Raster Order Groups)的主要内容,如果未能解决你的问题,请参考以下文章
Metal2剖析:抗锯齿之基于Imageblock特性的增强MSAA