Какова функция fps glsl, фактически используемая для?

Каждый раз, когда я пьяную просматриваю, я вижу вопрос без ответа. И это заставляет меня задаться вопросом, что на самом деле было предназначено для этого.

Чтение документов это:  abs (dFdx (p)) + abs (dFdy (p)).

Итак, это не классический выбор mip, который является max (dx, dy). Это для альтернативного выбора мака? Но я не могу найти случай, когда абс (dx) + abs (dy) будет лучше. Должна быть какая-то бумага сигграфа или общий алгоритм, который я полностью потерял, используя эту функцию. И это должно быть действительно популярно, потому что оно превратилось в GLSL. Единственное, что я могу придумать, - это фильтр 2d, который мне не хватает.
Но что? Я уверен, что кто-то здесь знает, и как только вы это увидите, это очевидно. Итак: какой алгоритм использует abs (dx) + abs (dy)?

Ответ 1

На самом деле вы действительно на деньги с предложением 2D-фильтрации. Любой фильтр, который опирается на какой-то показатель для скорости изменения между пикселем и его соседями, может воспользоваться этой функцией.

Примерами могут быть сглаживание, обнаружение краев, анизотропная фильтрация. Я уверен, что есть больше примеров, о которых можно было бы подумать.

По вашему вопросу и комментариям кажется, что вы ожидаете, что это разумная причина для включения этой функции в GLSL. Я бы просто сказал, что это полезная функция. Возможно, кто-то с более глубокими знаниями о фактических внутренних компонентах этой функции может предоставить более подробную информацию о том, что происходит за кулисами (т.е. Если есть какое-либо улучшение производительности над рукописным эквивалентом с dFdx и dFdy).

Ответ 2

это полная производная для функции DF = dF/dx * dx + dF/dy * dy. См. сходство? fWidth >= DF или в словах fWidth - максимально возможное изменение в переменной фрагмента F между любым из соседних пикселей текущего фрагмента. т.е. 8 окружающих пикселей в окрестности 3x3.