я использую
worldview_inverse * (projection_inverse * vector)
для преобразования координат экранного пространства в координаты мирового пространства. Я предполагал, что
(x,y,1,1)
превратится в точку на дальней плоскости, а
(x,y,-1,1)
преобразуется в точку на ближайшей плоскости, и, соединяя линию, я могу запросить все объекты в пирамиде обзора, которые пересекают линию. После преобразования я делю полученные точки на их соответствующие компоненты .w. Это работает для дальней плоскости, но точка на ближней плоскости каким-то образом преобразуется в начало мирового пространства.
Я думаю, что это связано с w-компонентами единицы, которую я использую в обратной проекции, потому что обычно это 1 до проекции, а не после, а я делаю обратную проекцию. Что я делаю неправильно?