Подробности о том, что делает GPU при отсечении в 4D однородном пространстве?

Я изучаю программируемый конвейер рендеринга, реализуя крошечный программный рендеринг. Я пытаюсь реализовать его в «аппаратном» стиле. Однако я не знаком с конвейером GPU и получил некоторые проблемы однородного отсечения.

Однородное отсекающее пространство содержит переменную 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?

И как только я получу правильную точку пересечения, должен ли я сделать интерполяцию между объектами вершин, созданной вершинным шейдером, чтобы получить новый объект вершин?

10 голосов | спросил stanleyerror 28 Mayam16 2016, 09:54:36

2 ответа


1

Обрезание выполняется в 3D-пространстве перед разделением «w», а не в пространстве 4D.

Графический процессор обнаруживает либо просто ближнюю, либо дальнюю плоскости, либо все 6 3D-плоскостей усечения и клип Geo.

Если w-деление было сделано до того, как знак координат перевернется для вершин за глазом /камерой.

Если для 3D-клипа перед w-делением используются только ближние дальние плоскости, то они могут полагаться исключительно на 2D-отсечение на стадии растеризации для x & y.


W - это просто проекционный делитель, непосредственно связанный с Z, а не 4-й размер. Матрица 4x4 - это «взлом», включающий в себя перевод и проекционное разделение в удобном формате. Он работает только потому, что позиции подразумеваются как (x, y, z, 1), а нормали подразумеваются как (x, y, z, 0).

Но на самом деле это не 4 независимых измерения.

Любое другое значение для «W», которое не равно 1 или 0, мало подходит для геометрии, это удобный переключатель включения /выключения для выключения перевода.

ответил Stephane Hockenhull 17 PM00000090000002231 2018, 21:42:22
0

Если вы спрашиваете о преобразовании однородных кодовых пространств пространства в координаты согласованных координат устройства (NDC), процесс: <x y z w> → <x/w y/w z/w>

Этот GDSE Q /A на Почему пространство для клипов всегда упоминается как «однородное пространство клипа»? также может быть вам полезно.

ответил Pikalek 29 Maypm16 2016, 17:56:08

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132