在OpenGL中,我在像素着色器中使用以下内容来获取正确的像素位置,该位置用于对漫反射,法线,位置gbuffer纹理进行采样:
ivec2 texcoord = ivec2(textureSize(unifDiffuseTexture) * (gl_FragCoord.xy / UnifAmbientPass.mScreenSize));
到目前为止,这是我在HLSL中所做的:
float2 texcoord = input.mPosition.xy / gScreenSize;
最值得注意的是,在GLSL中,我使用textureSize()
来获得准确的像素位置。我想知道,是否有一个等同于textureSize()
的HLSL?
答案 0 :(得分:1)
在HLSL中,您有GetDimensions
但它可能比从常量缓冲区中读取它更昂贵,即使它最初看起来更容易用来进行快速测试。
此外,您可以选择使用SV_Position
和Load
,只需使用xy
作为uint2
,您无需使用带有纹理坐标的用户插补器索引屏幕。