Я знаю, що це питання може здатися досить легко відповісти, але це зводить мене з розуму. Занадто багато можливих ситуацій, з якими має справлятися хороший механізм змішування альфа, і для кожного алгоритму я можу придумати, що щось не вистачає.
Це методи, про які я хотів поки що:
Перш за все, хоч щодо сортування об’єктів за глибиною, цей просто не вдається, оскільки об'єкти не є простими формами, вони можуть мати криві і можуть петляти всередині один одного. Тому я не завжди можу сказати, хто з них ближче до камери.
Тоді я подумав про сортування трикутників, але цей також може провалитись, думав, що я не впевнений, як його реалізувати. Є рідкісний випадок, який може знову викликати проблему, коли два трикутника проходять один через одного. Знову ніхто не може сказати, хто з них ближче.
Наступне, що було використати буфер глибини, принаймні, головна причина, що у нас буфер глибини - через проблеми з сортуванням, про які я згадував, але тепер ми отримуємо ще одну проблему. Оскільки об'єкти можуть бути прозорими, в одному пікселі може бути видно більше одного об’єкта. Тож для якого об’єкта я повинен зберігати глибину пікселів?
Тоді я подумав, що, можливо, я можу зберігати лише саму глибину переднього об'єкта, і за допомогою цього визначаю, як слід поєднувати наступні дзвінки з виведенням у цей піксель. Але знову виникла проблема, подумайте про дві напівпрозорі площини із суцільною площиною посередині. Я збирався вивести суцільну площину в кінці, видно найбільш віддалену площину. Зауважте, що я збирався об'єднати кожні дві площини, поки не залишиться лише один колір для цього пікселя. Очевидно, я можу використовувати й методи сортування через ті самі причини, які я пояснював вище.
Нарешті, єдине, що я думаю, що я можу працювати - це рендеринг усіх об'єктів у різні цілі візуалізації, а потім сортування цих шарів та показ кінцевого результату. Але цього разу я не знаю, як можна реалізувати цей алгоритм.