J'apprends le pipeline de rendu programmable en implémentant un minuscule logiciel de rendu. J'essaie de l'implémenter dans un style «matériel». Cependant, je ne connais pas le pipeline GPU et j'ai eu quelques problèmes d'écrêtage homogène.
L'espace de découpage homogène contient une variable w qui varie à chaque sommet. La coordonnée homogène de chaque objet sommet (entre la matrice de projection et la division homogène par w) est-elle dans son propre espace de découpage? Si oui, comment couper les lignes et les triangles plus près que le Frustum ou même étirer derrière la caméra (c'est-à-dire w <= frustum_znear)?
Mise à jour : ce fil dit que l'écrêtage dans l'espace homogène est directement un problème d'intersection dans l'espace homogène 4D. Ce qui signifie que le point d'intersection est p_vec4 = t * point1_vec4 + (1 - t) * point2_vec4
. Disons que j'ai P0(-70, -70, 118, 120)
et P1(-32, -99, -13, -11)
dans un espace homogène 4D, et que le point d'intersection avec plane w = -z
(qui dans NDC est z = -1) est (-35, -96, -1, 0.9) t = 0.99
, comment obtenir l'objet sommet correspondant dans l'espace NDC?
Et une fois que j'ai obtenu le bon point d'intersection, dois-je faire l'interpolation entre les objets vertex produits par vertex shader pour obtenir un nouvel objet vertex?