Estou aprendendo um pipeline de renderização programável implementando um pequeno renderizador de software. Eu tento implementá-lo em um estilo de 'hardware'. No entanto, não estou familiarizado com o pipeline da GPU e tive alguns problemas de recorte homogêneo.
O espaço de recorte homogêneo contém uma variável w que varia em cada vértice. As coordenadas homogêneas de cada objeto de vértice (entre a matriz de projeção e a divisão homogênea por w) estão em seu próprio espaço de recorte? Se sim, como cortar as linhas e triângulos mais perto do que o Frustum ou até esticar atrás da câmera (ou seja, w <= frustum_znear)?
Atualização : esta discussão diz que o recorte no espaço homogêneo é diretamente um problema de interseção no espaço homogêneo 4D. O que significa que o ponto de interseção é p_vec4 = t * point1_vec4 + (1 - t) * point2_vec4
. Digamos que eu tenha P0(-70, -70, 118, 120)
e P1(-32, -99, -13, -11)
no espaço homogêneo 4D, e o ponto de interseção com plane w = -z
(que no NDC é z = -1) seja (-35, -96, -1, 0.9) t = 0.99
, como obter o objeto de vértice correspondente no espaço do NDC?
E depois de obter o ponto de interseção correto, devo fazer a interpolação entre objetos de vértice produzidos pelo vertex shader para obter um novo objeto de vértice?