Введение

Алгоритм затенения в компьютерной графике Модель отражения БлиннФонг, также называемая модифицированной моделью отражения Фонг, является модификацией, разработанной Джимом Блинном для модели отражения Фонг. BlinnPhong - модель затенения, используемая в фиксированном функциональном трубопроводе OpenGL и Direct3D (до Direct3D 10 и OpenGL 3.1) и выполняется на каждой вершине, когда она проходит по графическому трубопроводу; значения пикселей между вершинами интерполируются затенением Gouraud по умолчанию, а не более дорогостоящим Phong затенением.

Эффективность

Blinn Phong будет быстрее Phong в том случае, когда зритель и свет рассматриваются как очень отдаленные, например, приближающиеся или на бесконечности. Это относится к направленным огням и орфографическим/изометрическим камерам. В этом случае вектор полупути не зависит от положения и кривизны поверхности просто потому, что вектор полупути зависит от направления к положению зрителя и направления к положению света, которые индивидуально сходятся на этом удаленном расстоянии, поэтому вектор полупути может считаться постоянным в этом случае. Поэтому можно рассчитать один раз для каждого света, а затем использовать для всего кадра, или даже, пока свет и точка зрения остаются в одном и том же относительном положении. То же самое не относится к методу Фонга по использованию вектора отражения, который зависит от кривизны поверхности и должен быть пересчитан для каждого пикселя изображения (или для каждой вершины модели в случае освещения вершин). В 3D-сцены с перспективными камерами, эта оптимизация невозможна.

Образец кода языка затенения OpenGL

Этот образец в OpenGL Shading Language состоит из двух файлов кода, или шейдеров. Первый из них - так называемый шейдер вершин и реализует шейдинг Phong, который используется для интерполяции поверхностного нормала между вершинами. Второй теневой модуль - это так называемый фрагментный теневой модуль, который использует модель теневого модуля BlinnPhong для определения диффузного и спекулярного света от точечного источника света.