Я вивчаю програмований конвеєр рендерінгу, впроваджуючи крихітний програмний рендер. Я намагаюся реалізувати це в «апаратному» стилі. Однак я не знайомий з конвеєром графічних процесорів і мав деякі проблеми однорідного відсікання.
Однорідний простір відсікання містить змінну w, різну в кожній вершині. Чи є однорідна координата кожного вершинного об’єкта (між матрицею проекції та гомогенним поділом на w) на власному просторі відсікання? Якщо так, як обрізати лінії та трикутники ближче, ніж Frustum або навіть тягнуться за камерою (тобто w <= frustum_znear)?
Оновлення : цей потік говорить, що відсікання в однорідному просторі є безпосередньо проблемою перетину в однорідному просторі 4D. Що означає точку перетину p_vec4 = t * point1_vec4 + (1 - t) * point2_vec4
. Скажіть, у мене є P0(-70, -70, 118, 120)
і P1(-32, -99, -13, -11)
в однорідному просторі 4D, і точка перетину з plane w = -z
(яка в NDC z = -1) полягає в тому (-35, -96, -1, 0.9) t = 0.99
, як отримати відповідний вершинний об’єкт у просторі NDC?
І як тільки я отримаю правильну точку перетину, чи слід робити інтерполяцію між вершинними об'єктами, виробленими вершиновим шейдером, щоб отримати новий об’єкт вершини?