Я немного запутался, как применить операцию масштабирования к выходной текстуре при использовании вычислительного шейдера. Например,
kernel void testCompute (texture2d<half, access::read> inputTexture [[ texture(0) ]],
texture2d<half, access::write> outputTexture [[ texture(1) ]],
uint2 gid [[thread_position_in_grid]])
{
if ((gid.x >= inputTexture.get_width()) || (gid.y >= inputTexture.get_height())) {
return;
}
half4 inputColor = inputTexture.read(gid);
half4 outputColor = half4(inputColor.r, 0.0, inputColor.b, 1.0);
outputTexture.write(outputColor, gid);
}
Предполагает ли приведенный выше вычислительный шейдер равный размер входной и выходной текстуры? Если я использую вершинный и фрагментный шейдер, я могу настроить сэмплер с filter :: linear, и выходная текстура будет масштабирована в соответствии с ее размером. Как добиться того же с помощью вычислительного шейдера?