Наскільки я знаю, немає жодної можливості ні DX, ні GL використовувати повторно альфа RT 0 для всіх операцій по змішуванню. На жаль, це, здається, не те, що підтримується апаратним забезпеченням.
Ви можете налаштувати різні режими накладання для кожної цілі візуалізації або ввімкнути змішування для одних та відключити для інших; однак, якщо змішування ввімкнено для цілі візуалізації, вона завжди використовує власну альфа-альфа.
Існує також режим під назвою "змішування подвійного джерела" (див. DX11 doc та OGL doc ), який дозволяє вказати альфа для змішування з повністю окремим висновком від піксельного шейдера, а не альфа-каналом цілі візуалізації. Однак цей режим працює лише з однією ціллю візуалізації на поточному обладнання.
Наскільки я можу сказати, єдиними варіантами для змішування декількох цілей візуалізації з однаковою альфа є:
- Виведіть ту саму альфа на всі цілі візуалізації (жертвуючи здатністю зберігати інші значення в альфа-каналі, як ви, наприклад, у відкладеному затіненні).
- Повторіть візуалізацію в окремому проході для кожної цілі візуалізації, використовуючи поєднання з двома джерелами.
- Використовуйте БПЛА / завантаження зображень, щоб виконати змішування в піксельному шейдері (працює лише в тому випадку, якщо геометрія не перекривається в просторі екрану, оскільки немає захисту від перегонових умов; також, мабуть, начебто повільно).
- На апаратному забезпеченні, яке його підтримує, DX11.3 / DX12 Rasterizer-Order Views , NV_fragment_shader_interlock або INTEL_fragment_shader_ordering (остання також піддається графічним процесорам AMD). Це три назви для однієї і тієї ж речі: в основному "критичний розділ" в піксельному шейдері, який дозволяє читати-змінювати-записувати текстуру атомним чином щодо інших викликів шейдерів пікселів. Це по суті дозволяє довільну програмовану суміш, але це, мабуть, досить повільно, і доступне лише на останніх пристроях.