我有一个像素着色器,我想根据我的世界空间坐标计算每个像素的位置。我该怎么做?我需要什么?
我的ps_input
结构有一个float4位置:SV_POSITION
。我认为这很重要,但存储在里面的值似乎很有趣。
我似乎无法弄清楚它们的相关性。例如,如果一个像素是2d,为什么它有一个w组件或z组件?
我正在使用DirectX
,像素着色器位于HLSL
。 C++
作为我在CPU上的编程语言。
任何帮助都将不胜感激。
答案 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/
否则明智地搜索像素到视图空间。我知道你想要世界空间,但将所有内容转换为视图空间可能更快。