В 3D-компьютерной графике затенение Фонга , интерполяция Фонга [1] или интерполяционное затенение нормальных векторов [2] — это метод интерполяции для затенения поверхности , изобретенный пионером компьютерной графики Буй Туонг Фонгом . Затенение Фонга интерполирует нормали поверхности по растеризованным многоугольникам и вычисляет цвета пикселей на основе интерполированных нормалей и модели отражения. Затенение Фонга может также относиться к конкретной комбинации интерполяции Фонга и модели отражения Фонга .
Затенение Фонга и модель отражения Фонга были разработаны в Университете Юты Буй Туонг Фонгом , который опубликовал их в своей докторской диссертации 1973 года. диссертация [3] [4] и статья 1975 года. [5] Методы Фонга считались радикальными на момент их появления, но с тех пор стали де-факто методом затенения базовой линии для многих приложений рендеринга. [ нужна цитация ] Методы Фонга оказались популярными из-за их в целом эффективного использования времени вычислений на визуализируемый пиксель. [ нужна цитата ]
Затенение Фонга улучшает затенение Гуро и обеспечивает лучшее приближение к затенению гладкой поверхности. Затенение Фонга предполагает плавно меняющийся вектор нормали к поверхности. Метод интерполяции Фонга работает лучше, чем затенение Гуро, когда применяется к модели отражения с небольшими зеркальными бликами, такой как модель отражения Фонга.
Самая серьезная проблема с затенением по Гуро возникает, когда в центре большого многоугольника обнаруживаются зеркальные блики. Поскольку эти зеркальные блики отсутствуют в вершинах многоугольника , а затенение Гуро интерполируется на основе цветов вершин, зеркальное блики будут отсутствовать во внутренней части многоугольника. Эту проблему решает затенение Фонга.
В отличие от затенения Гуро, при котором цвета интерполируются по многоугольникам, в затенении Фонга вектор нормали линейно интерполируется по поверхности многоугольника от нормалей вершин многоугольника. Нормаль к поверхности интерполируется и нормализуется для каждого пикселя, а затем используется в модели отражения, например модели отражения Фонга , для получения окончательного цвета пикселя. Затенение Фонга требует больше вычислительных затрат, чем затенение Гуро, поскольку модель отражения должна рассчитываться для каждого пикселя, а не для каждой вершины.
В современном графическом оборудовании варианты этого алгоритма реализованы с помощью пиксельных или фрагментных шейдеров .
Затенение Фонга также может относиться к конкретной комбинации интерполяции Фонга и модели отражения Фонга , которая является эмпирической моделью локального освещения. Он описывает способ отражения света поверхностью как комбинацию диффузного отражения шероховатых поверхностей с зеркальным отражением блестящих поверхностей. Он основан на неофициальном наблюдении Буй Туонг Фонга о том, что блестящие поверхности имеют небольшие интенсивные зеркальные блики , тогда как матовые поверхности имеют большие блики, которые постепенно исчезают. Модель отражения также включает в себя окружающий термин, учитывающий небольшое количество света, рассеиваемого по всей сцене.