Kết xuất hoãn lại là gì?


54

Tôi đã nghe nói về kết xuất hoãn lại và cách sử dụng nó có thể cho phép "rất nhiều" ánh sáng trong một cảnh mà không có hiệu suất lớn, nhưng nó là gì và (từ mức cao) nó được thực hiện như thế nào?

Câu trả lời:


55

Đặc điểm xác định của kết xuất hoãn lại là về cơ bản nó thay đổi độ phức tạp của kết xuất cảnh từ đèn O (hình học *) sang O (hình học + đèn).

Điều này đạt được bằng cách hiển thị cảnh đầu tiên bằng cách sử dụng các shader được thiết kế để xuất các thuộc tính cơ bản như (ở mức tối thiểu) *, màu bình thường và màu khuếch tán. Các thuộc tính khác có thể bao gồm các giá trị đặc trưng cho mỗi pixel và các thuộc tính vật liệu khác. Chúng được lưu trữ trong các mục tiêu kết xuất toàn màn hình, được gọi chung là bộ đệm G.

(*: Đáng lưu ý rằng các nhà phát triển sẽ thường chọn tham gia lưu trữ độ sâu và sử dụng điều đó để tái tạo vị trí, vì có sẵn độ sâu rất hữu ích cho rất nhiều hiệu ứng khác. )

Khi bộ đệm G đã được tạo, có thể tính toán kết quả được chiếu sáng đầy đủ cho bất kỳ pixel nào trên màn hình bằng cách giải BRDF chính xác một lần cho mỗi pixel trên mỗi ánh sáng. Nói cách khác, nếu bạn có 20 mắt lưới, mỗi lưới bị ảnh hưởng bởi 20 đèn, kết xuất ("chuyển tiếp") truyền thống sẽ yêu cầu bạn kết xuất lại mỗi lưới nhiều lần để tích lũy kết quả của mỗi ánh sáng ảnh hưởng đến nó. Trong trường hợp xấu nhất, đây sẽ là một cuộc gọi rút thăm mỗi lưới trên mỗi đèn, hoặc tổng số 400 cuộc gọi rút thăm! Đối với mỗi cuộc gọi rút thăm này, bạn sẽ truyền lại một cách dự phòng các đỉnh của lưới. Cũng có một cơ hội tốt là bạn sẽ chiếu các pixel không thực sự bị ảnh hưởng bởi ánh sáng hoặc sẽ không hiển thị trong kết quả cuối cùng (vì chúng sẽ bị che khuất bởi hình học khác trong cảnh). Mỗi kết quả trong các tài nguyên GPU bị lãng phí.

So sánh với kết xuất hoãn lại: Bạn chỉ phải kết xuất các mắt lưới một lần để điền vào bộ đệm G. Sau đó, với mỗi ánh sáng, bạn đưa ra một hình dạng giới hạn đại diện cho mức độ ảnh hưởng của ánh sáng. Đối với ánh sáng điểm, đây có thể là một quả cầu nhỏ hoặc đối với ánh sáng định hướng, nó sẽ là một hình tứ giác toàn màn hình, vì toàn bộ cảnh bị ảnh hưởng.

Sau đó, khi bạn đang thực hiện đổ bóng pixel / mảnh cho âm lượng giới hạn của ánh sáng đó, bạn đọc các thuộc tính hình học từ vị trí thích hợp trong kết cấu bộ đệm G và sử dụng các giá trị đó để xác định kết quả chiếu sáng. Chỉ các pixel cảnh hiển thị trong kết quả cuối cùng được tô bóng và chúng được tô chính xác một lần cho mỗi ánh sáng. Điều này thể hiện một khoản tiết kiệm rất lớn.

Tuy nhiên, nó không phải không có nhược điểm. Đó là một mô hình rất khó mở rộng để xử lý hình học trong suốt (xem: lột sâu). Trên thực tế, rất khó, hầu như tất cả các triển khai kết xuất bị trì hoãn đều quay trở lại để chuyển tiếp kết xuất cho các phần trong suốt của cảnh. Kết xuất hoãn lại cũng tiêu tốn một lượng lớn VRAM và băng thông bộ đệm khung, điều này dẫn đến các nhà phát triển sẽ có những bước dài để đóng gói và nén các thuộc tính bộ đệm G vào các thành phần nhỏ nhất / ít nhất có thể.


8

Còn được gọi là Bóng mờ hoãn lại, Kết xuất hoãn lại đề cập đến một tập hợp rộng các đường dẫn kết xuất có thể lưu trữ kết quả trung gian vào kết cấu, sau đó hoàn thành phương trình kết xuất sau bằng cách lấy mẫu dữ liệu trung gian.

Bộ đệm hình học là một ví dụ ban đầu, trong đó cảnh được kết xuất thành một loạt các bộ đệm có chứa, ví dụ như vị trí, bình thường và kết cấu cơ sở của hình học mờ. Ánh sáng đã không được áp dụng, và màu sắc cuối cùng không được biết đến. Trong các lần chuyền tiếp theo, đèn được hiển thị và bộ đệm hình học được lấy mẫu. Điều này có nghĩa là số lượng lớn đèn có thể được hiển thị với chi phí cố định về số lượng đèn có thể nhìn thấy trên một pixel màn hình. Kết xuất truyền thống sẽ đánh giá tất cả các nguồn sáng cho các bề mặt bị che khuất và không bao giờ nhìn thấy trên màn hình.

Nhiều biến thể tồn tại, bao gồm hiển thị thông tin ánh sáng đầu tiên chẳng hạn.

Xem để biết thêm thông tin: http://en.wikipedia.org/wiki/Deferred_shading http://delicy.com/aancsiid/deferred-shading


-3

Kết xuất hoãn lại đang xử lý trong đó geomtry trước khi thực hiện lần thứ hai để che bóng mọi thứ. Điều này hữu ích vì nó thay đổi độ đồng bộ thành O (nguồn sáng pixel), cho phép bạn sử dụng các cảnh phức tạp chỉ với một cú nhấn nhỏ để thực hiện.

Thực hiện nó khá đơn giản. Vượt qua đầu tiên yêu cầu kết xuất, ở mức tối thiểu, khoảng cách, bình thường và màu sắc. Bạn có thể thêm nhiều kết cấu để kết xuất như hình ảnh và vị trí, với chi phí bộ nhớ.

Khi bạn đã kết xuất chúng, sau đó bạn kết xuất một số hình cầu, trong đó một nguồn sáng duy nhất nằm ở trung tâm của mỗi cái, thêm ánh sáng lại với nhau, cắt tất cả vào hình học trong cảnh của bạn và cuối cùng, áp dụng dự phòng.


Tôi không nghĩ rằng điều này thêm bất cứ điều gì mới vào câu trả lời. Nó chỉ giống như những phần được trả lời lại trong câu trả lời của Neverender.
HolyBlackCat

@HolyBlackCat Có một vài khác biệt quan trọng. Trước hết, có phương trình phức tạp chính xác, và thứ hai, nó ngắn gọn hơn nhiều, trong khi vẫn giải thích cách thực hiện nó.
hellol11

there's the correct complexity equationThật. Nhưng tôi muốn nói rằng đó là một chi tiết nhỏ. Bạn có thể đề nghị rằng như là một chỉnh sửa cho câu trả lời khác, hoặc để lại nhận xét về điều đó một khi bạn có đủ danh tiếng. Làm một câu trả lời mới vì đó là một chút quá mức. it's much more conciseCá nhân tôi không nghĩ rằng đó là tốt. Càng có nhiều chi tiết hữu ích, câu trả lời càng tốt, phải không?
HolyBlackCat

1
@HolyBlackCat Đến một điểm, vâng. Cá nhân, tôi không muốn phải đi qua một bức tường văn bản chỉ để có một câu hỏi đơn giản được trả lời.
hellol11
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.