この質問の答えは少し簡単に聞こえるかもしれませんが、それは私を夢中にさせています。適切なアルファブレンディングメカニズムで処理できる状況が多すぎるため、アルゴリズムごとに欠けているものがあると考えることができます。
これらは私がこれまでに考えた方法です:
まず、オブジェクトの深さによる並べ替えについてですが、オブジェクトは単純な形状ではなく、曲線があり、互いにループする可能性があるため、これは単に失敗します。だから、どちらがカメラに近いのか常にわからない。
次に、三角形の並べ替えについて考えましたが、これも失敗する可能性があります。実装方法がわからないので、2つの三角形が互いに通過するという問題が再び発生する可能性があるというまれなケースがあります。繰り返しますが、どちらがより近いかは誰にもわかりません。
次に、深度バッファーを使用しました。少なくとも深度バッファーがある主な理由は、前述した並べ替えの問題が原因ですが、今度は別の問題が発生します。オブジェクトは透明なので、1つのピクセルに複数のオブジェクトが表示される場合があります。では、どのオブジェクトにピクセル深度を保存する必要がありますか?
次に、最前面のオブジェクト深度のみを保存できると考え、そのピクセルを使用して、次の描画呼び出しをどのようにブレンドするかを決定しました。しかし、再び問題が発生しました。2つの半透明の平面の中央に固体平面があると考えてください。最後に固体平面をレンダリングしようとしていましたが、最も遠い平面を見ることができます。そのピクセルの色が1つだけになるまで、2つのプレーンごとにマージすることに注意してください。上で説明したのと同じ理由で、明らかにソート方法も使用できます。
最後に、すべてのオブジェクトをさまざまなレンダーターゲットにレンダーし、それらのレイヤーを並べ替えて最終的な出力を表示することが、私が作業できると思います。しかし、今回はこのアルゴリズムをどのように実装できるかわかりません。