Kompüter qrafikasında bir vertex və fraqment arasındakı fərq nədir?


cavab 1:

Bir vertex həndəsə vahididir. Mövqe, rəng, toxuma koordinatları, normal, tangent, bitangent və s. Kimi xüsusiyyətlərə malik ola bilər. Qrafik boru kəmərində vertex məlumatları və nöqtələr, xətlər və ya üçbucaqlar kimi əsas elementləri yaratmaq üçün məlumatlar ötürülür.

Məsələn, düz bir divar yaratmaq üçün iki üçbucaqdakı nöqtələrə uyğun gələn altı künc nöqtəsini keçə bilərsiniz. Bununla birlikdə, bu məlumatların bəziləri artıqdır, çünki üçbucaqlar bir kənarı bölüşür, buna görə kənarındakı nöqtələr iki dəfə ötürülür. Tullantıdır, tullantı isə pisdir.

Alternativ olaraq, daha səmərəli olmaq üçün, yalnız dörd ucun (düzbucağın bənzərsiz nöqtələri) məlumatları ötürə bilərsiniz və eyni zamanda vertexdəki məlumatlara baxan iki üçbucaq yaratmaq üçün altı indeksdən bir sıra keçə bilərsiniz. Üçbucaq zolaqları və üçbucaq pərəstişkarları kimi daha çox seçim var, buna görə bir az daha mürəkkəb bir nəticə əldə edə bilər, amma əsas fikir budur.

Əsas elementlər yaradıldıqdan sonra, vertex şader tərəfindən dəyişdirilir və sonra ekranda kəsilir. Bunlar bir neçə əsas elementə parçalana bilər və ya tamamilə ekrandan kənarda qalmaqla və ya arxa cırılması uğursuz olduqda tamamilə atılır.

Nəhayət, onu dartma mərhələsindən keçmiş primitivlər fraqmentlərə bölünür. Bu, məsələn, üçbucaq götürmək və əhatə etdiyi ekranın bütün piksel † -i hesablamaq prosesidir. Bunlar fraqmentlərdir və rasterer ibtidai uclardan bütün dəyişən parametrləri interpolasiya etməyə kömək etmişdir.

Və beləliklə, bu hissələr pikselin son rəngini təyin etmək üçün fraqment şader tərəfindən işlənir. Bu, bir toxumanın rəngini axtarmaq (cilalanmamış toxuma koordinatlarından istifadə etməklə), ilkin olaraq rəngi yenidən Gouraud kölgəsi üçün yenidən tətbiq etmək (vertexdən interpolasiya edilmiş) və ya hər bir piksel üçün işıqlandırma hesablamaları hazırlamaq deməkdir. Phong kölgə).

Müasir GPU-lar çox çevikdir, çünki həqiqətən istədiyiniz hər hansı bir məlumat yarada bilərsiniz. Əvvəllər olduğu kimi aparata bağlanmırlar. Hər hansı bir məlumat bölüşmək və ucları və ya fraqmentləri üçün hər hansı bir emal növü edə bilərsiniz. Həm də daha mürəkkəbdir, çünki birbaşa həndəsə yaratmağa və GPU-da ümumi paralel emal etməyə imkan verən həndəsə şaderləri, tessellation shaders və hesablama şaderləri var.

† Qeyd: Bir fraqment piksel ilə tam eyni deyildir. Görünən pikselləri əldə etmək üçün dərinlik, stencil və ya alfa kimi bəzi sınaqlardan keçməmisiniz və antialiasing pikseldən daha çox fraqment yaradır və onları bir-birinə ortalayır. Çox sadə hallarda, lakin bunları ekvivalent hesab etmək olar. Sadəcə xəbərdar olun ki, bunlar eyni deyil.