Uczę się programowalnego potoku renderowania, wdrażając mały program do renderowania. Staram się zaimplementować go w stylu „sprzętowym”. Nie znam jednak potoku GPU i mam problemy z jednorodnym obcinaniem.
Jednorodną przestrzeń strzyżenie zawiera wagowo zmienną którym różne dla każdego wierzchołka. Czy homogeniczna współrzędna każdego obiektu wierzchołka (między matrycą projekcji a jednorodnym podziałem przez w) ma własną przestrzeń obcinania? Jeśli tak, to jak przyciąć linie i trójkąty bliżej Frustum, a nawet rozciągnąć za kamerę (tj. W <= frustum_znear)?
Aktualizacja : ten wątek mówi, że obcinanie w jednorodnej przestrzeni jest bezpośrednio problemem przecięcia w jednorodnej przestrzeni 4D. Co oznacza, że punktem przecięcia jest p_vec4 = t * point1_vec4 + (1 - t) * point2_vec4
. Powiedzmy, że mam P0(-70, -70, 118, 120)
i P1(-32, -99, -13, -11)
w przestrzeni 4D jednorodnej, a punktem przecięcia z plane w = -z
(który w NDC jest z = -1) jest (-35, -96, -1, 0.9) t = 0.99
, jak uzyskać odpowiedni obiekt wierzchołka w przestrzeni NDC?
A kiedy już otrzymam właściwy punkt przecięcia, czy powinienem wykonać interpolację między obiektami wierzchołków wytworzonymi przez moduł cieniujący wierzchołki, aby uzyskać nowy obiekt wierzchołka?