HLSL在延迟着色中校正像素位置

时间:2014-07-28 21:57:25

标签: directx hlsl directx-11

在OpenGL中,我在像素着色器中使用以下内容来获取正确的像素位置,该位置用于对漫反射,法线,位置gbuffer纹理进行采样:

ivec2 texcoord = ivec2(textureSize(unifDiffuseTexture) * (gl_FragCoord.xy / UnifAmbientPass.mScreenSize));

到目前为止,这是我在HLSL中所做的:

float2 texcoord = input.mPosition.xy / gScreenSize;

最值得注意的是,在GLSL中,我使用textureSize()来获得准确的像素位置。我想知道,是否有一个等同于textureSize()的HLSL?

1 个答案:

答案 0 :(得分:1)

在HLSL中,您有GetDimensions

但它可能比从常量缓冲区中读取它更昂贵,即使它最初看起来更容易用来进行快速测试。

此外,您可以选择使用SV_PositionLoad,只需使用xy作为uint2,您无需使用带有纹理坐标的用户插补器索引屏幕。

这里是TextureObject

的完整文档