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