Кіріспе
Компьютерлік графикадағы көлеңкелеу алгоритмі БлиннФонг шағылысу моделі, сонымен қатар модификацияланған Фонг шағылысу моделі деп аталады, Джим Блинннің Фонг шағылысу моделіне жасаған модификациясы. BlinnPhong - OpenGL және Direct3D-дің тұрақты функциялық құбыржолында (Direct3D 10 және OpenGL 3.1-ден бұрын) қолданылатын көлеңкелеу моделі. Ол графикалық құбыржолдан төмен қарай өткен сайын әр түбіне жүргізіледі; түбі арасындағы пиксельдер мәні әдетте Gouraud көлеңкелеуімен интерполяцияланады, Phong көлеңкелеуі емес.
The Blinn–Phong reflection model, also called the modified Phong reflection model, is a modification developed by Jim Blinn to the Phong reflection model. Blinn–Phong is a shading model used in OpenGL and Direct3D's fixed function pipeline (before Direct3D 10 and OpenGL 3.1), and is carried out on each vertex as it passes down the graphics pipeline; pixel values between vertices are interpolated by Gouraud shading by default, rather than the more computationally expensive Phong shading.
Тиімділік
Блинн Фонг көрермен мен жарық өте алыс деп саналған жағдайда Фонгтан жылдам болады, мысалы, жақындау немесе шексіз. Бұл бағыттағы жарық және орфографиялық/изометриялық камералар үшін қолданылады. Бұл жағдайда жартылай вектор позицияға және бетінің қисықтығына тәуелсіз, өйткені жартылай вектор көрерменнің орнына және жарықтың орнына бағытқа тәуелді, олар осы қашықтықта жеке-жеке шоғырланады, сондықтан жартылай вектор осы жағдайда тұрақты деп есептеуге болады. Сондықтан әр жарық үшін бір рет есептеуге болады және содан кейін бүкіл кадр үшін немесе шын мәнінде жарық пен көрініс нүктесі бірдей салыстырмалы жағдайда қалады. Фонгтың бейнелеу векторының қолданылуымен бірдей емес, ол беттің қисықтығына байланысты және суреттің әрбір пикселі үшін қайта есептелуі керек (немесе нүктелік жарықтандыру жағдайында модельдің әрбір нүктесі үшін). Перспективалық камералар бар 3D-сәулелерде бұл оңтайландыру мүмкін емес.
OpenGL Shading Language код үлгісі
OpenGL Shading Language-дегі бұл үлгі екі код файлынан немесе шейдерлерден тұрады. Біріншісі - бұл vertex shader деп аталады және Phong көлеңкесін іске асырады, ол үстіңгі нормалды түкпірлер арасында интерполяциялауға арналған. Екінші шаянушы - фрагмент шаянушы деп аталады және нүктелі жарық көзінен диффуздық және көкжиекті жарықты анықтау үшін Блинн-Фонг шаяну моделін іске асырады.