center or centroid interpolation

wingstone

2022/07/20

阅读量

目录

中心插值或质心插值介绍

介绍

正常光栅化流程都是使用像素中心来进行光栅化的插值着色计算;

在msaa中,在同一个像素会使用多采样点来进行是否在图元内的判断,使用像素中心点来进行插值着色计算(center interpolation);这样就会遇到在同一像素内,有采样点被图元覆盖,但是像素中心点在图元外部的情况;如下图所示:

msaa

在这种情况下,使用像素中心点计算得到的属性插值可能会有较大问题,从而使得光照结果出现很大波动;

centroid interpolation就是为了解决这个问题而采用的方案;其采用图元与子像素交集的质心来进行插值计算,实际工程中,会使用图元所覆盖采样点的平均位置来进行插值计算;如下图所示:

centroid

使用centroid可以解决插值的问题;但是由于centroid采样位置并不是均匀分布的,从而使得ddx、ddy的计算无法得到数值精确值,进而会引入mipmap计算有误差的问题;如下图所示:

ddxddy

reference

  1. GLSL: Center or Centroid? (Or When Shaders Attack!)
  2. ShadingCourse_HLSL