Вычисление координат мирового пространства в пиксельном шейдере
У меня есть пиксельный шейдер, и я хочу рассчитать положение каждого пикселя в терминах моих координат мирового пространства. Как бы я это сделал? Что мне нужно?
у меня есть 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 возможно быстрее.