Có thể trộn alpha nhiều mục tiêu kết xuất bằng cách sử dụng alpha được chỉ định không?


9

Giả sử tôi đã kết xuất các mục tiêu từ 0 đến N và RT 0 có trong thành phần thứ tư của nó một kênh alpha được chỉ định bởi một vật liệu hoặc mặt nạ hoặc thứ gì đó.

Có thể có sự pha trộn bộ tổng hợp phần cứng kết xuất các mục tiêu từ 1 đến N bằng cách sử dụng alpha của mục tiêu kết xuất đầu tiên không?

Câu trả lời:


5

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 DX11tà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.

Đúng, tôi nghĩ rằng đây cũng là kết luận của tôi. Bạn có biết không nếu đây là trường hợp của DX12 hoặc Vulkan (chưa được phát hành)? Nó có các ứng dụng khá lớn để kết xuất hoãn lại như bạn đã đề cập và không có lựa chọn thay thế nào hiện tại có vẻ thỏa đáng.
jeremyong

@jeremyong Xin lỗi, tôi không nghĩ có bất kỳ thay đổi nào đối với các hoạt động trộn trong DX12. Không chắc chắn về Vulkan, nhưng tôi sẽ ngạc nhiên; phần cứng trộn không thay đổi. FWIW, trong các trò chơi tôi đã làm việc, chúng tôi đã thực hiện một biến thể của viên đạn số 3 cho đề can hoãn lại và xử lý trước hình học để tách nó thành các nhóm không chồng chéo.
Nathan Reed

Gotcha cảm ơn đã giới thiệu. Đề can hoãn lại chính xác là những gì tôi đang thực hiện
jeremyong
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.