Можно ли использовать CIFilters непосредственно в Metal?
Я создаю приложение для iOS, используя SceneKit и ARKit. я используюSCNTechnique
чтобы изменить рендеринг SceneKit и отрисовать часть сцены стилизованным образом. В настоящее время я использую простой шейдер металлических фрагментов, чтобы нарисовать сцену в черно-белом цвете:
fragment half4 fragment_shader(VertexOut vert [[stage_in]],
texture2d<half, access::sample> scene [[texture(0)]]) )
{
constexpr sampler samp = sampler(coord::normalized, address::repeat, filter::nearest);
half4 color = scene.sample(samp, vert.texcoord);
constexpr half3 weights = half3(0.2126, 0.7152, 0.0722);
color.rgb = half3(dot(color.rgb, weights)) * 0.1;
return color;
}
Теперь я хочу инкапсулировать силизацию и использовать CIFilter
вместо того, чтобы самому писать весь металлический код. Можно ли вызвать CIFilters in Metal и, например, передать имtexture2d
? Если да, то как?
1 ответ
Вроде можно назначить CIFilters
к SCNNodes
напрямую через filters
свойство. Из документов:
Когда этот массив непустой, SceneKit визуализирует узел (и его иерархию дочерних узлов) в буфер изображения, а затем применяет фильтры перед компоновкой вывода фильтров в визуализированную сцену.