我有一个像素着色器,我想根据我的世界空间坐标计算每个像素的位置。我该怎么做?我需要什么?
我有一个ps_input
具有 float4 位置的结构:SV_POSITION
。我认为这很重要,但存储在里面的值似乎有点有趣。
我似乎无法弄清楚它们有什么关系。例如,如果一个像素是 2d 的,那么它为什么有一个 w 分量或 z 分量呢?
我在用着DirectX
像素着色器位于HLSL
. C++
作为我在 CPU 上的编程语言。
任何帮助,将不胜感激。
如果我没记错的话,SV_POSITION只是0->W 0->H,所以它描述了它在屏幕上的位置。该网站包含更多信息:http://msdn.microsoft.com/en-us/library/windows/desktop/bb509647(v=vs.85).aspx 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/ http://jcoluna.wordpress.com/2011/01/27/reconstructing-view-space-position-from-depth/
否则明智地搜索像素以查看空间。我知道你想要世界空间,但将所有内容转换为视图空间可能会更快。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)