В спецификации 4.5 OpenGL, раздел 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|)
.
Возможно, мое понимание неверно, может кто-нибудь помочь объяснить это?