У меня есть треугольник в 2D-пространстве. У меня есть координаты экранного пространства каждой вершины, и у меня есть значения атрибутов каждой вершины.
Как я могу рассчитать dFdx/dFdy для этих атрибутов? Другими словами, как изменится атрибут с пикселя экрана на пиксель.
//fragment shader
varrying vec2 myAttr;
void main(void)
{
vec2 px = dFdx(myAttr);
vec2 py = dFdy(myAttr);
}
Я хочу получить px, py. Мне нужно знать дельту (рост) myAttr
от следующего пикселя для осей x и y. Мне нужна формула/алгоритм, как их вычислить вручную (например, для случаев, когда железо не поддерживает производные).
P.S. Значение атрибута линейно интерполировано между 3 вершинами (согласно документу OpenGL).
current = (max-min)*pos
, где pos = 0..1 :) И я знаю, что это линейная интерполяция. Как интерполировать между 3 значениями я понятия не имею. И было бы хорошо, если бы кто-нибудь показал, как рассчитывается интерполяция, в частности, в OpenGL/DirectX/любом оборудовании (GL_LINEAR). - person tower120   schedule 04.09.2014