Hãy xem xét ánh sáng hoãn lại. Tóm lại, chiếu sáng hoãn lại là một kỹ thuật sử dụng một phiên bản thu nhỏ của bóng mờ bị trì hoãn để tính toán ánh sáng không gian màn hình. Trong lần truyền thứ hai, hình học được hiển thị lại bằng cách sử dụng ánh sáng không gian màn hình làm thông tin chiếu sáng.
Kỹ thuật này được sử dụng để giảm kích thước của Bộ đệm G, vì cần ít thuộc tính hơn. Nó cũng mua cho bạn một lợi thế, đó là G-Buffer và ánh sáng không gian màn hình có thể có độ phân giải thấp hơn màn hình.
Tôi đã triển khai trình kết xuất dựa trên GLES 2.0 nghiêm ngặt (mặc dù là trình thử nghiệm) và tôi đã quản lý để chuyển G-Buffer xuống một kết cấu RGBA (vâng, tôi đã sử dụng texture2D thay vì trình kết xuất đồ họa). Nó chứa không gian màn hình bản đồ bình thường + bộ đệm độ sâu trong kênh alpha (được nén bằng logarit, theo như tôi nhớ).
Các thuộc tính vị trí (được gọi là thế giới ở đây) có thể được tính toán trong quá trình chiếu sáng bằng cách sử dụng thực tế, rằng trong một phép chiếu phối cảnh, .xy bị lệch bởi .z , do đó:
x yfr u s t u m= x yw o r l d/ zw o r l d
Tôi đã xấp xỉ xy của thuộc tính vị trí bằng cách thực hiện:
x yw o r l d= x yfr u s t u m∗ zw or l d
Lưu ý: Tôi phải điều chỉnh thêm tùy theo cài đặt của ma trận chiếu.
Cũng đáng chú ý là, rằng tôi có khả năng để bỏ qua z thành phần của vectơ bình thường, kể từ khi tôi có thể tái tạo lại z từ .xy kể từ vector bình thường được chuẩn hóa để:
x2+ y2+ z2----------√= 1x2+ y2+ z2= 1z2= 1 - ( x2+ y2)z= 1 - ( x2+ y2)-----------√
Sử dụng kỹ thuật này, tôi có khả năng giải phóng một kênh khác trong Bộ đệm G RGBA của mình và sử dụng kênh này để lưu trữ bản đồ không gian màn hình (hoặc độ bóng, nếu bạn muốn).