Play radio

Phong-ийн рэндэрлэлт

Энэ бол 3D компютер графикт хэрэглэгддэг нэг төрлийн дөхөлтийн арга юм. Үүнийг заримдаа phong-ийн дөхөлт бас нормал-вектор дөхөлттэй shading гэж нэрлэх нь ч бий. (цаашид phong shading гэх)



Энэ аргаар rasterize хийгдсэн дүрс дээгүүр дөхөлтийн аргаар нормал векторуудыг тооцон бодох бөгөөд мөн тусгалын загвар дээр суурилан эцсийн пикселийн өнгийг олдог.

Энэхүү аргыг анх 1973 онд Bui Tuong Phong хэмээх виетнам судлаач хөгжүүлж Ph.D хамгаалсан байдаг.

Phong shading нь Gouraud shading арга дээр суурилан хөгжүүлэгдсэн бөгөөд энэ аргыг бодвол smooth гадаргуу дээр илүү сайн дөхөлттэй үр дүнг үзүүлдэг байна. Мөн гэрлийн тусгалын загвар дээр бас Gouraud аргаас илүү сайн ажилладаг.

Gouraud shading дээр дүрсийн гадаргуу дээрхи өнгөний утгыг дөхөлтөөр тооцдог байхад Phong-ийн арга нь дүрсийн цэгэн оройн нормалиудын хооронд дөхөлт хийдэг байна.

Phong-ийн тусгалын загварт гадаргуугын нормал утга нь пиксел бүр дээр дөхөлтөөр тооцоологдож мөн нормчлогддог байна тэгээд тэндээс эцсийн пикселийн гаргаж авдаг.

гэхдээ Gouraud -ийн аргыг бодох юм бол Phong-ийн арга нь хамаагүй их тооцоолол шаарддаг. Яагаад вэ гэвэл Gouraud shading арга нь дүрсийн цэгэн оройн хувьд дөхөлт хийж ажилладаг байхад Phong-ийнх болохоор пиксель бүр дээр тооцоологдон ажилладаг.
Гэхдээ орчин үеийн техник хангамж дээр pixel болон fragment shader-үүдйиг ашиглаад энэ аргыг хэрэгжүүлэхэд тохиромжтой.


Phong-ийн дөхөлтөөс гадна Phong-ийн тусгалын загвар гэж байх бөгөөд энэ нь гэрэл гадаргуу дээр хаашаа ойх вэ гэдэг дээр үндэслэгддэг.
Энэ тусгалын загварт дараах гурван өнгөний компонентүүдийг тооцон олох хэрэгтэй. Үүнд :
Ambient, Diffuse, Specular

Phong рэндэрлэлтийн жишээ.

[сүүлд нэмэв]
ok. Энэ phong-ийн загвар дээр тулгуурлаад rrc framework-аар хэрэгжүүлж үзлээ соорс кодуудыг харах боломжтой.
https://github.com/sharavsambuu/rrc-tank/blob/master/game/Demo02.hpp
https://github.com/sharavsambuu/rrc-tank/blob/master/game/Demo02.cpp

shader код нь
https://github.com/sharavsambuu/rrc-tank/blob/master/data/shaders/demo02/demo02.phong.vert.glsl
https://github.com/sharavsambuu/rrc-tank/blob/master/data/shaders/demo02/demo02.phong.frag.glsl

Код нь яаж ажилладаг вэ гэхээр
эхлээд бид гэрлийн компонентүүдийг мэдэж байх хэрэгтэй. Эдгээр нь Ambient, Diffuse, Specular болно. Энэ гурван компонентийн утгуудын нийлбэр эцсийн бидний нүдэнд харагдах өнгө байдаг. Материал болон гэрэл хоёр эдгээр компонентүүдийг агуулдаг. Хэрвээ материалд гэрэл тусгавал материал болон гэрэл хоёрын комнонент тус бүрийг харгалзан үржээд хооронд нэмснээр эцсийн пикселийн өнгө гарч ирнэ.
Phong рэндэрлэлтийн загварт камерийн харж байгаа чиглэл, гадаргуу хаашаа харж байна вэ гэдгийг илтгэх чиглэл буюу нормаль вектор, мөн гэрлийн тусаж байгаа чиглэл гэсэн үндсэн гурван вектор хоорондын өнцөгийн ялгаан дээр тулгуурлаж дээрхи гэрлийн гурван компонентийг өөрчилөх бөгөөд тэр өөрчлөлтийн үр дүн нь дараах зурагт үзүүлж буй үр дүнд хүргэнэ. phong.frag.glsl файлаас хэрхэн програмчилж байгааг хараарай.