l3u*_*fly 5 directx position hlsl pixel-shader
我有一个像素着色器,我想根据我的世界空间坐标来计算每个像素的位置。我该怎么做?我需要什么?
我有一个ps_input具有float4位置的结构:SV_POSITION。我假设这很重要,但是存储在里面的值似乎有点可笑。
我似乎无法弄清楚它们之间的关系。例如,如果一个像素是2d,那么为什么它具有w分量或z分量呢?
我正在使用DirectX,并且像素着色器在中HLSL。C++作为我在CPU上的编程语言。
任何帮助,将不胜感激。
如果我没记错的话,SV_POSITION只是0-> W 0-> H,因此它描述了它在屏幕上的位置。该站点包含更多信息:http : //msdn.microsoft.com/zh-cn/library/windows/desktop/bb509647(v=vs.85).aspx
为了使像素进入世界空间,您可以将像素坐标转换回世界空间。数学和所有方面都有点棘手(我想是!),但是本文应该对您有所帮助! http://jcoluna.wordpress.com/2011/01/27/reconstructing-view-space-position-from-depth/
否则,明智地寻找像素到视野。我知道您想要世界空间,但将所有内容转换为视图空间可能更快。