나는이 질문에 대답하기가 약간 쉽지만 나를 미치게합니다. 좋은 알파 블렌딩 메커니즘이 처리해야 할 상황이 너무 많으며 각 알고리즘에 대해 누락 된 것이 있다고 생각할 수 있습니다.
지금까지 내가 본 방법은 다음과 같습니다.
우선 깊이별로 객체를 정렬하는 방법에 대해서는 객체가 단순한 모양이 아니기 때문에 실패합니다. 곡선이 있고 서로 반복 될 수 있습니다. 어느 쪽이 카메라에 더 가까운 지 항상 알 수는 없습니다.
그런 다음 삼각형 정렬에 대해 생각했지만 이것도 실패 할 수 있습니다. 어떻게 구현하는지 잘 모르겠습니다. 두 개의 삼각형이 서로 통과하는 문제를 일으킬 수있는 드문 경우가 있습니다. 다시 어느 쪽이 더 가까운 지 알 수 없습니다.
다음은 깊이 버퍼를 사용하는 것이 었습니다. 적어도 우리가 깊이 버퍼를 가지고있는 주된 이유는 내가 언급 한 정렬 문제로 인한 것이지만 지금은 또 다른 문제가 발생합니다. 객체가 투명 할 수 있으므로 단일 픽셀에서 둘 이상의 객체가 표시 될 수 있습니다. 픽셀 심도를 어떤 객체에 저장해야합니까?
그런 다음 가장 정면의 객체 깊이 만 저장할 수 있다고 생각하고 그 픽셀을 사용하여 다음 그리기 호출을 어떻게 혼합 해야하는지 결정합니다. 그러나 다시 문제가있었습니다. 중간에 단단한 평면이있는 두 개의 반투명 평면에 대해 생각해보십시오. 마지막에 솔리드 평면을 렌더링하려고했는데 가장 먼 평면을 볼 수 있습니다. 해당 픽셀에 대해 하나의 색상 만 남을 때까지 두 평면마다 병합하려고합니다. 분명히 위에서 설명한 것과 같은 이유로 정렬 방법을 사용할 수도 있습니다.
마지막으로 내가 일할 수 있다고 생각하는 유일한 것은 모든 객체를 다른 렌더링 대상으로 렌더링 한 다음 해당 레이어를 정렬하고 최종 출력을 표시하는 것입니다. 그러나 이번에는이 알고리즘을 어떻게 구현할 수 있는지 모르겠습니다.