在OpenGL规范4.5中的14.6.5节中,用于计算深度偏移的公式为
o = m * factor + r * units.
其中m
是梯度的大小。
为什么使用梯度的大小代替fwidth
,即|dFdx|+|dFdy|
?据我了解,要找到一个像素内的最大偏移量,例如[0,1]x[0,1]
,我们可以找到以下函数的最大值
f(x,y)=|dFdx*(x-0.5)+dFdy*(y-0.5)|
通过微积分,我们可以发现最大值为0.5(|dFdx|+|dFdy|)
。
也许我的理解是错误的,有人可以帮忙解释一下吗?