Вычисление координат мирового пространства в пиксельном шейдере

У меня есть пиксельный шейдер, и я хочу рассчитать положение каждого пикселя в терминах моих координат мирового пространства. Как бы я это сделал? Что мне нужно?

у меня есть ps_input структура, которая имеет позицию float4: SV_POSITION, Я предполагаю, что это важно, но значения, хранящиеся внутри, кажутся довольно забавными.

Я не могу понять, к чему они относятся. Например, если пиксель 2d, почему у него есть компонент w или az?

я использую DirectX и пиксельный шейдер находится в HLSL, C++ как мой язык программирования на процессоре.

Любая помощь будет оценена.

1 ответ

Решение

Если я правильно помню это, SV_POSITION - только 0->W 0->H, поэтому он описывает, где он находится на экране. этот сайт содержит больше информации: http://msdn.microsoft.com/en-us/library/windows/desktop/bb509647(v=vs.85).aspx

Чтобы получить пиксель в мировом пространстве, вы преобразуете свою пиксельную координату обратно в мир пространства. это немного сложно с математикой и все (я думаю, что это так!), но эта статья должна помочь вам! http://jcoluna.wordpress.com/2011/01/27/reconstructing-view-space-position-from-depth/

в противном случае ищите пиксель в пространстве просмотра. я знаю, что вы хотели worldspace, но преобразование всего в viewspace возможно быстрее.

Другие вопросы по тегам