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

Directx HLSL校正延迟着色中的像素位置,directx,hlsl,directx-11,Directx,Hlsl,Directx 11,在OpenGL中,我在像素着色器中使用以下内容来获得正确的像素位置,该位置用于采样漫反射、法线、位置gbuffer纹理: ivec2 texcoord = ivec2(textureSize(unifDiffuseTexture) * (gl_FragCoord.xy / UnifAmbientPass.mScreenSize)); 到目前为止,这是我在HLSL中所做的: float2 texcoord = input.mPosition.xy / gScreenSize; 最值得注意的是,

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

ivec2 texcoord = ivec2(textureSize(unifDiffuseTexture) * (gl_FragCoord.xy / UnifAmbientPass.mScreenSize));
到目前为止,这是我在HLSL中所做的:

float2 texcoord = input.mPosition.xy / gScreenSize;
最值得注意的是,在GLSL中,我使用
textureSize()
来获得精确的像素位置。我想知道,在HLSL中是否有与
textureSize()

等效的HLSL,您有吗

但它可能比从一个恒定的缓冲区读取要昂贵,即使它在开始时看起来更容易用于快速测试

此外,您还可以选择使用
SV_Position
,只需将
xy
用作
uint2
,就不需要用户插值器携带纹理坐标来索引屏幕

这里是一个完整的文档