计算像素着色器中的世界空间坐标

时间:2012-10-09 06:56:52

标签: position directx hlsl pixel-shader

我有一个像素着色器,我想根据我的世界空间坐标计算每个像素的位置。我该怎么做?我需要什么?

我的ps_input结构有一个float4位置:SV_POSITION。我认为这很重要,但存储在里面的值似乎很有趣。

我似乎无法弄清楚它们的相关性。例如,如果一个像素是2d,为什么它有一个w组件或z组件?

我正在使用DirectX,像素着色器位于HLSLC++作为我在CPU上的编程语言。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:5)

如果我没记错,SV_POSITION只有0-> W 0-> H,所以它描述了它在屏幕上的位置。此网站包含更多信息:http://msdn.microsoft.com/en-us/library/windows/desktop/bb509647(v=vs.85).aspx

要将像素转换为世界空间,请将pixelcordinate转换回worlspace。数学和所有这一切都有点棘手(我认为是!) 但是这篇文章应该可以帮到你! http://jcoluna.wordpress.com/2011/01/27/reconstructing-view-space-position-from-depth/

否则明智地搜索像素到视图空间。我知道你想要世界空间,但将所有内容转换为视图空间可能更快。