Учитывая, что вы не используете maskCol в своем возвращении, я собираюсь предположить, что вы пытались сделать что-то вроде:
float4 patCol...
float4 maskCol...
return float4(patCol.rgb, maskCol.a);
То есть, взяв значение альфа из маски и применив его кthe source patCol ...
Чтобы это работало, вам нужно установить параметры смешивания в вашем pipeDescriptor:
pipelineDescriptor.colorAttachments[0].isBlendingEnabled = true
pipelineDescriptor.colorAttachments[0].rgbBlendOperation = .add
pipelineDescriptor.colorAttachments[0].alphaBlendOperation = .add
pipelineDescriptor.colorAttachments[0].sourceRGBBlendFactor = .sourceAlpha
pipelineDescriptor.colorAttachments[0].sourceAlphaBlendFactor = .sourceAlpha
pipelineDescriptor.colorAttachments[0].destinationRGBBlendFactor = .oneMinusSourceAlpha
pipelineDescriptor.colorAttachments[0].destinationAlphaBlendFactor = .oneMinusSourceAlpha
Это даст вам поведение по умолчанию, source-overсмешивание: source.rgba + destination.rgba