2012-10-09 70 views
4

我有一個像素着色器,我想根據我的世界空間座標計算每個像素的位置。我將如何做到這一點?我需要什麼?計算像素着色器中的世界空間座標

我有一個ps_input結構,它有一個float4位置:SV_POSITION。我認爲這很重要,但內部存儲的值似乎很有趣。

我似乎無法弄清楚他們有什麼關係。例如,如果一個像素是2d,那麼它是如何具有w分量或z分量的呢?

我使用的是DirectX,像素着色器在HLSL。作爲我在CPU上的編程語言的C++

任何幫助,將不勝感激。

回答

4

如果我正確記得這一點,SV_POSITION只是0-> W 0-> H,所以它描述了它在屏幕上的位置。本網站包含更多信息:http://msdn.microsoft.com/en-us/library/windows/desktop/bb509647(v=vs.85).aspx

要將像素映射到世界空間,您需要將像素座標轉換回worlspace。這對數學和所有(我認爲它是有點棘手!) 但這篇文章應該幫助你! http://jcoluna.wordpress.com/2011/01/27/reconstructing-view-space-position-from-depth/

否則明智地搜索像素到viewspace。我知道你想要worldspace,但將所有內容轉換爲viewspace可能會更快。

+0

明白了。謝謝。偉大的網站(第二個,那是)。 – l3utterfly

相關問題