5

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

我有一个ps_input具有 float4 位置的结构:SV_POSITION。我假设这很重要,但存储在其中的值似乎有点有趣。

我似乎无法弄清楚它们与什么有关。例如,如果一个像素是 2d 的,那么它怎么会有 aw 分量或 az 分量呢?

我正在使用DirectX并且像素着色器位于HLSL. C++作为我在 CPU 上的编程语言。

任何帮助,将不胜感激。

4

1 回答 1

5

如果我没记错的话,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/

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

于 2012-10-09T08:45:27.150 回答