金属着色语言 - FragCoord等价?

时间:2017-04-18 11:55:51

标签: glsl metal shading metalkit

我尝试将this shadertoy scene翻译成Metal Kernel。在shartrtoy代码中:

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    vec3 dir = rayDirection(45.0, iResolution.xy, fragCoord);
    ...
}

OpenGL案例中,我们需要从iResolution窗口发送glfw。来自fragCoord的{​​{1}}将gl_FragCoord

我在Fragment Shader档案中有这个:

metal

所以我可以从kernel void compute(texture2d<float, access::write> output [[texture(0)]], uint2 gid [[thread_position_in_grid]]) { int width = output.get_width(); int height = output.get_height(); .... } iResolution获取width。但我不确定如何获得height

gl_FragCoord是否有等同于Metal_stdlib的内容?或者如果我必须计算,我怎样才能获得相同的值?

1 个答案:

答案 0 :(得分:1)

如果你正在寻找&#34;片段&#34;在窗口坐标中的位置(如gl_FragCoord所示),您可以使用float2(gid),范围从(0,0)到(宽度,高度)。仅当您的网格尺寸(线程组大小和线程组计数的乘积)与目标纹理的尺寸完全匹配时才会出现这种情况。