По какой-то причине у меня проблемы с альфа-смешиванием в металле. Я рисую в MTKView и для каждого создаваемого конвейера я делаю следующее:
descriptor.colorAttachments[0].blendingEnabled = YES;
descriptor.colorAttachments[0].rgbBlendOperation = MTLBlendOperationAdd;
descriptor.colorAttachments[0].alphaBlendOperation = MTLBlendOperationAdd;
descriptor.colorAttachments[0].sourceRGBBlendFactor = MTLBlendFactorSourceAlpha;
descriptor.colorAttachments[0].sourceAlphaBlendFactor = MTLBlendFactorSourceAlpha;
descriptor.colorAttachments[0].destinationRGBBlendFactor = MTLBlendFactorOneMinusSourceAlpha;
descriptor.colorAttachments[0].destinationAlphaBlendFactor = MTLBlendFactorOneMinusSourceAlpha;
Однако по какой-либо причине это не вызывает альфа-тестирования. Вы можете даже включить отладчик фреймов, и вы увидите вершины с альфа 0, которые отображаются черным, а не прозрачным.
Одна мысль, которая у меня возникла, заключается в том, что некоторая геометрия оказывается в одной и той же плоскости z, поэтому, если альфа-смешение не работает в той же плоскости z, что может вызвать проблему. Но я не думаю, что это вещь.
Почему альфа-смешивание не работает?
Я надеюсь смешать, как будто это прозрачное стекло. Думай так.