Смешивание в металле: альфа, установленная в 0, все еще непрозрачна - PullRequest
0 голосов
/ 29 сентября 2018

У меня проблемы с настройкой смешивания в металле.Даже если начать с примера Hello Triangle , предоставленного Apple, используя следующий код

pipelineStateDescriptor.colorAttachments[0].blendingEnabled = YES;
pipelineStateDescriptor.colorAttachments[0].sourceAlphaBlendFactor = MTLBlendFactorZero;
pipelineStateDescriptor.colorAttachments[0].destinationAlphaBlendFactor = MTLBlendFactorZero;

и функцию фрагмента

fragment float4 fragmentShader(RasterizerData in [[stage_in]]) {
    return float4(in.color.rgb, 0);
}

, треугольник по-прежнему полностью непрозрачен,В конечном итоге я хочу добиться смешения двух форм с использованием различных факторов смешения, но я подумал, что начну с простого примера, чтобы понять, что происходит.Чего мне не хватает?

1 Ответ

0 голосов
/ 29 сентября 2018

sourceAlphaBlendFactor и destinationAlphaBlendFactor связаны с созданием смеси для альфа-канала.то есть они контролируют alpha , который будет записан в ваш целевой буфер, который на самом деле не будет виден вам.Возможно, вас больше интересует RGB, который записывается в буфер кадров.

Попробуйте вместо этого установить значения для sourceRGBBlendFactor и destinationRGBBlendFactor.Для традиционного альфа-смешения установите sourceRGBBlendFactor в MTLBlendFactorSourceAlpha и установите destinationRGBBlendFactor в MTLBlendFactorOneMinusSourceAlpha

...