Đồ họa thời gian thực triển khai một loạt các xấp xỉ để đối phó với chi phí tính toán của việc mô phỏng ánh sáng gián tiếp, đánh đổi giữa hiệu suất thời gian chạy và độ trung thực của ánh sáng. Đây là một lĩnh vực nghiên cứu tích cực, với các kỹ thuật mới xuất hiện hàng năm.
Ánh sáng xung quanh
Ở đầu rất đơn giản của phạm vi, bạn có thể sử dụng ánh sáng xung quanh : nguồn sáng toàn cầu, đa hướng áp dụng cho mọi đối tượng trong cảnh, mà không cần quan tâm đến nguồn sáng thực tế hoặc khả năng hiển thị cục bộ. Điều này hoàn toàn không chính xác, nhưng cực kỳ rẻ, dễ dàng cho một nghệ sĩ điều chỉnh và có thể trông ổn tùy thuộc vào cảnh và phong cách hình ảnh mong muốn.
Các phần mở rộng phổ biến cho ánh sáng xung quanh cơ bản bao gồm:
- Làm cho màu sắc xung quanh thay đổi theo hướng, ví dụ như sử dụng các sóng hài hình cầu (SH) hoặc một sơ đồ khối nhỏ và tìm kiếm màu trong một shader dựa trên vectơ thông thường của mỗi đỉnh hoặc pixel. Điều này cho phép một số khác biệt thị giác giữa các bề mặt của các hướng khác nhau, ngay cả khi không có ánh sáng trực tiếp chiếu tới chúng.
- Áp dụng các kỹ thuật che giấu môi trường xung quanh (AO) bao gồm AO đỉnh được tính toán trước, bản đồ kết cấu AO , trường AO và AO không gian màn hình (SSAO) . Tất cả đều hoạt động bằng cách cố gắng phát hiện các khu vực như lỗ hổng và kẽ hở nơi ánh sáng gián tiếp ít có khả năng chiếu vào và làm tối ánh sáng xung quanh ở đó.
- Thêm một sơ đồ khối môi trường để cung cấp phản xạ gương xung quanh. Một sơ đồ khối với độ phân giải khá (128² hoặc 256² mỗi mặt) có thể khá thuyết phục đối với hình dạng trên bề mặt cong, sáng bóng.
Nướng ánh sáng gián tiếp
"Cấp độ" tiếp theo, có thể nói, về các kỹ thuật liên quan đến nướng bánh (tiền điện toán ngoại tuyến) một số đại diện của ánh sáng gián tiếp trong một cảnh. Ưu điểm của nướng là bạn có thể nhận được kết quả chất lượng khá cao với ít chi phí tính toán theo thời gian thực, vì tất cả các phần cứng được thực hiện trong nướng. Sự đánh đổi là thời gian cần thiết cho quá trình nướng có hại cho tốc độ lặp của các nhà thiết kế cấp; Cần thêm bộ nhớ và dung lượng ổ đĩa để lưu trữ dữ liệu được tính toán trước; khả năng thay đổi ánh sáng trong thời gian thực rất hạn chế; và quá trình nướng chỉ có thể sử dụng thông tin từ hình học mức tĩnh, do đó hiệu ứng ánh sáng gián tiếp từ các đối tượng động như ký tự sẽ bị bỏ qua. Tuy nhiên, ánh sáng nướng được sử dụng rất rộng rãi trong các trò chơi AAA ngày nay.
Bước nướng có thể sử dụng bất kỳ thuật toán kết xuất mong muốn nào, bao gồm theo dõi đường dẫn, độ phóng xạ hoặc sử dụng chính công cụ trò chơi để hiển thị hình khối (hoặc dấu chấm phẩy ).
Các kết quả có thể được lưu trữ trong kết cấu ( ánh sáng ) áp dụng cho hình học tĩnh ở cấp độ và / hoặc chúng cũng có thể được chuyển đổi thành SH và được lưu trữ trong các cấu trúc dữ liệu thể tích, chẳng hạn như khối lượng chiếu xạ (kết cấu khối lượng trong đó mỗi texel lưu trữ đầu dò SH) hoặc lưới tứ diện . Sau đó, bạn có thể sử dụng các shader để tra cứu và nội suy màu từ cấu trúc dữ liệu đó và áp dụng chúng cho hình học được hiển thị của bạn. Phương pháp thể tích cho phép ánh sáng nướng được áp dụng cho các đối tượng động cũng như hình học tĩnh.
Độ phân giải không gian của ánh sáng, v.v. sẽ bị giới hạn bởi bộ nhớ và các ràng buộc thực tế khác, vì vậy bạn có thể bổ sung ánh sáng nướng bằng một số kỹ thuật AO để thêm chi tiết tần số cao mà ánh sáng nướng không thể cung cấp và đáp ứng với các đối tượng động (chẳng hạn như làm tối ánh sáng gián tiếp dưới một nhân vật hoặc phương tiện đang di chuyển).
Ngoài ra còn có một kỹ thuật gọi là chuyển bức xạ được tính toán trước (PRT) , giúp mở rộng nướng để xử lý các điều kiện ánh sáng động hơn. Trong PRT, thay vì tự nướng ánh sáng gián tiếp, bạn nướng chức năng truyền từ một số nguồn ánh sáng thường là bầu trời đến ánh sáng gián tiếp kết quả trong cảnh. Hàm truyền được biểu diễn dưới dạng ma trận biến đổi từ các hệ số SH đích đến tại mỗi điểm mẫu nướng. Điều này cho phép thay đổi môi trường ánh sáng và ánh sáng gián tiếp trong cảnh sẽ phản hồi hợp lý. Far Cry 3 và 4 đã sử dụng kỹ thuật này để cho phép một chu kỳ ngày đêm liên tục, với ánh sáng gián tiếp thay đổi dựa trên màu sắc bầu trời vào mỗi thời điểm trong ngày.
Một điểm khác về nướng bánh: có thể hữu ích khi có dữ liệu nướng riêng biệt cho ánh sáng gián tiếp khuếch tán và đặc biệt. Các hình khối hoạt động tốt hơn nhiều so với SH cho đặc tính (vì hình khối có thể có nhiều chi tiết góc cạnh hơn), nhưng chúng cũng chiếm nhiều bộ nhớ hơn, vì vậy bạn không thể đặt chúng dày đặc như các mẫu SH. Hiệu chỉnh parallax có thể được sử dụng để phần nào bù đắp cho điều đó, bằng cách làm cong vênh theo sơ đồ khối để làm cho phản xạ của nó cảm thấy có căn cứ hơn với hình học xung quanh nó.
Kỹ thuật hoàn toàn theo thời gian thực
Cuối cùng, có thể tính toán ánh sáng gián tiếp hoàn toàn động trên GPU. Nó có thể đáp ứng trong thời gian thực với những thay đổi tùy ý của ánh sáng hoặc hình học. Tuy nhiên, một lần nữa, có một sự đánh đổi giữa hiệu suất thời gian chạy, độ trung thực ánh sáng và kích thước cảnh. Một số trong những kỹ thuật này cần một GPU mạnh mẽ để hoạt động, và có thể chỉ khả thi đối với kích thước cảnh giới hạn. Chúng cũng thường chỉ hỗ trợ một luồng ánh sáng gián tiếp.
- Một sơ đồ khối môi trường động, trong đó các mặt của sơ đồ khối được hiển thị lại mỗi khung bằng sáu camera được đặt xung quanh một điểm đã chọn, có thể cung cấp phản xạ môi trường tốt cho một đối tượng. Điều này thường được sử dụng cho xe người chơi trong các trò chơi đua xe, ví dụ.
- Chiếu sáng toàn cầu trong không gian màn hình , một phần mở rộng của SSAO tập hợp ánh sáng phản chiếu từ các pixel gần đó trên màn hình trong một lần xử lý hậu kỳ.
- Sự phản xạ tia không gian màn hình hoạt động bằng cách chiếu tia qua bộ đệm sâu trong một đường chuyền. Nó có thể cung cấp phản xạ chất lượng khá cao miễn là các đối tượng được phản chiếu trên màn hình.
- Tính phóng xạ tức thời hoạt động bằng cách truy tìm các tia vào cảnh bằng CPU và đặt ánh sáng điểm tại mỗi điểm chiếu tia, đại diện cho ánh sáng phản xạ đi theo mọi hướng từ tia đó. Nhiều đèn này, được gọi là đèn điểm ảo (VPL), sau đó được GPU kết xuất theo cách thông thường.
- Bản đồ bóng phản chiếu (RSM) tương tự như tính phóng xạ tức thời, nhưng VPL được tạo bằng cách hiển thị cảnh từ góc nhìn của ánh sáng (như bản đồ bóng) và đặt VPL ở mỗi pixel của bản đồ này.
- Khối lượng truyền ánh sáng bao gồm các lưới 3D của đầu dò SH được đặt trong toàn cảnh. RSM được kết xuất và sử dụng để "bơm" ánh sáng dội vào đầu dò SH gần bề mặt phản chiếu. Sau đó, một quy trình giống như lũ lụt truyền ánh sáng từ mỗi đầu dò SH đến các điểm xung quanh trong lưới và kết quả của việc này được sử dụng để áp dụng ánh sáng cho cảnh. Kỹ thuật này đã được mở rộng để tán xạ ánh sáng thể tích là tốt.
- Truy tìm hình nón Voxel hoạt động bằng cách voxel hóa hình học cảnh (có thể sử dụng các độ phân giải voxel khác nhau, mịn hơn gần camera và thô hơn), sau đó chiếu ánh sáng từ RSM vào lưới voxel. Khi kết xuất cảnh chính, trình tạo bóng pixel thực hiện một "dấu vết hình nón" tia-ray với bán kính tăng dần dần qua lưới voxel để thu thập ánh sáng tới cho bóng râm khuếch tán hoặc đặc trưng.
Hầu hết các kỹ thuật này không được sử dụng rộng rãi trong các trò chơi ngày nay do các vấn đề mở rộng đến kích thước cảnh thực tế hoặc các hạn chế khác. Ngoại lệ là sự phản chiếu không gian màn hình, rất phổ biến (mặc dù nó thường được sử dụng với các hình khối như một dự phòng, cho các khu vực mà phần không gian màn hình bị lỗi).
Như bạn có thể thấy, ánh sáng gián tiếp theo thời gian thực là một chủ đề lớn và thậm chí câu trả lời này (khá dài!) Chỉ có thể cung cấp một cái nhìn tổng quan và bối cảnh 10.000 feet để đọc thêm. Cách tiếp cận nào là tốt nhất cho bạn sẽ phụ thuộc rất lớn vào các chi tiết của ứng dụng cụ thể của bạn, những hạn chế nào bạn sẵn sàng chấp nhận và bạn phải dành bao nhiêu thời gian cho nó.