Eu tenho um pipeline no Vulkan com colorBlendState
with blendEnable = false
, logicOpEnable = true
e logicOp = XOR
para que a saída do shader de fragmento seja XORed com o conteúdo atual do anexo de cor. Eu tenho isso funcionando e se comporta conforme o esperado... principalmente.
O problema é que quando triângulos sobrepostos são usados no buffer de fragmentos, os triângulos parecem sofrer XOR entre si, mesmo que estejam todos na mesma passagem de renderização. Depois de pesquisar um pouco, parece que esse pode ser o comportamento correto, mas não é o desejado para o meu caso. Existe alguma maneira de revisar minha passagem de pipeline/renderização para executar apenas a operação lógica entre a saída do sombreador de fragmento e o conteúdo do anexo de cor carregado, e não entre triângulos individuais do sombreador de fragmento?
Ou seja, quero que todos os triângulos definidos no buffer de vértices sejam desenhados sem mesclagem ou operação lógica, até que o resultado final seja gravado no anexo de cores. Existe alguma maneira de fazer isso sem adicionar uma segunda passagem de renderização ou subpassagem?