2012-10-09 71 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

相关问题