金属阴影语言 - fragcoord等效



我试图将此Shadertoy场景转换为Metal Kernel。在Shadertoy代码中:

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

OpenGL情况下,我们需要从glfw窗口发送iResolutionfragCoord将是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();
    ....
}

因此,我可以从widthheight获得iResolution。但是我不确定如何获得gl_FragCoord

Metal_stdlib是否具有相当于gl_FragCoord的东西?或者,如果我必须计算,如何获得相同的值?

如果您在窗口坐标中寻找"片段"位置(如gl_FragCoord IS(,则可以使用 float2(gid), CC_16范围从(0,0(到(宽度,高度(。仅当您的网格尺寸(线组大小和线程组计数的乘积(与目标纹理的尺寸完全匹配时,这种情况仅此。

相关内容

  • 没有找到相关文章

最新更新