Theo như tôi biết thì không có cách nào trong DX hoặc GL để sử dụng lại alpha 0 của RT cho tất cả các hoạt động trộn. Thật không may, nó dường như không phải là thứ được hỗ trợ bởi phần cứng.
Bạn có thể định cấu hình các chế độ hòa trộn khác nhau cho từng mục tiêu kết xuất hoặc bật chế độ hòa trộn cho một số và vô hiệu hóa cho các mục tiêu khác; tuy nhiên, nếu trộn được bật cho mục tiêu kết xuất, nó luôn sử dụng alpha của chính nó.
Ngoài ra còn có một chế độ gọi là "pha trộn nguồn kép" (xem tài liệu DX11 và tài liệu OGL ), cho phép bạn chỉ định alpha để trộn với một đầu ra hoàn toàn tách biệt với trình đổ bóng pixel, chứ không phải kênh alpha của mục tiêu kết xuất. Tuy nhiên, chế độ này chỉ hoạt động với một mục tiêu kết xuất trên phần cứng hiện tại.
Theo như tôi có thể nói, các tùy chọn duy nhất để trộn một số mục tiêu kết xuất với cùng một alpha là:
- Xuất cùng một alpha trên tất cả các mục tiêu kết xuất (ví dụ, hy sinh khả năng lưu trữ các giá trị khác vào kênh alpha như trong bóng mờ bị trì hoãn).
- Lặp lại kết xuất trong một đường chuyền riêng cho từng mục tiêu kết xuất, sử dụng pha trộn nguồn kép.
- Sử dụng UAV / kho tải hình ảnh để thực hiện pha trộn trong trình đổ bóng pixel (chỉ hoạt động nếu hình học không tự chồng trong không gian màn hình, vì không có bảo vệ chống lại điều kiện chủng tộc; cũng có thể hơi chậm).
- Trên phần cứng hỗ trợ nó, DX11.3 / DX12 Rasterizer-Order Views , NV_fragment_shader_interlock hoặc INTEL_fragment_shader_ordering (sau này cũng được hiển thị bởi GPU AMD). Đây là ba tên cho cùng một điều: về cơ bản là "phần quan trọng" trong trình tạo bóng pixel cho phép bạn đọc-sửa đổi-viết một kết cấu nguyên tử đối với các yêu cầu đổ bóng pixel khác. Về cơ bản, nó cho phép trộn chương trình tùy ý, nhưng có lẽ nó khá chậm và chỉ khả dụng trên phần cứng gần đây.