Tại sao một số trò chơi cho thấy ánh sáng chiếu qua tường?


28

Trong một số trò chơi, tôi thấy ánh sáng chiếu xuyên qua tường, ngay cả khi tôi đặt chất lượng video ở mức cao.

Một vài ví dụ về các trò chơi tôi mới chơi gần đây là Borderlands 2 (vụ nổ tên lửa) và Call of Cthulhu (đèn lồng; trò chơi thậm chí còn sử dụng Unreal Engine 4).

Đây có phải là một lỗi hoặc có lý do hiệu suất?

Ví dụ Borderlands 2: https://youtu.be/9bV83qA6_mU?t=419 (vài lần, nhưng nhanh chóng)

Câu hỏi thưởng: trong trường hợp sau, có cách nào để dò tia có thể được sử dụng với giá rẻ để giải quyết vấn đề không? Tôi đoán rằng RT đắt tiền chắc chắn đã giải quyết vấn đề, nhưng tôi tự hỏi liệu nó cũng có thể được sử dụng ở dạng "giá rẻ" để giải quyết vấn đề cụ thể này.


21
Một bức tranh có giá trị 1000 từ.
Evorlor

8
Tôi phải đi chơi để kiểm tra, nhưng nó thực sự là ánh sáng lọt qua, hay nó có thể là hiệu ứng hạt phát sáng? Đặc biệt là ví dụ của bạn về vụ nổ tên lửa, tôi có thể tưởng tượng ra hiệu ứng hạt "lửa" phụ gia rất có khả năng bỏ qua va chạm. Đèn lồng cũng có thể làm tương tự để tạo ra quầng sáng nhìn thấy được, tôi cho rằng ...
AC

@Evorlor đã thêm một ví dụ.
Marcus

Câu trả lời:


43

Mở rộng câu trả lời đúng của TomTsagk, tôi nghĩ rằng nó có thể giúp mô tả thêm một chút về lý do tại sao các trò chơi hoạt động như thế này.

Ánh sáng trong các trò chơi không thực sự "di chuyển" từ nguồn, lên bề mặt, đến máy ảnh, bị cản trở trên đường đi.

Để tìm ra mức độ sáng để vẽ từng pixel của một bề mặt dựa trên một ánh sáng nhất định, chúng tôi sử dụng (hoặc gần đúng) một công thức toán học sử dụng hướng mặt của bề mặt và hướng từ điểm này trên bề mặt tới nguồn sáng. Đó chính là hướng phát sáng của nó - chúng ta thường không chiếu tia để kiểm tra xem ánh sáng có thực sự chạm tới pixel này hay không, bởi vì thực hiện điều đó cho mọi pixel trên màn hình và kiểm tra tia đối với tất cả các hình dạng chi tiết trong cảnh là thường vẫn còn quá đắt cho các trò chơi thời gian thực.

Vì vậy, theo mặc định, không có đèn trò chơi đổ bóng. Hướng đến một ánh sáng vẫn giữ nguyên ngay cả khi có bóng tối cản đường, vì vậy toán học cho chúng ta cùng một giá trị độ sáng.

Nếu chúng ta muốn mô phỏng bóng, chúng ta phải làm điều đó một cách riêng biệt. Một cách phổ biến là với cái được gọi là Bản đồ bóng tối. Trong phiên bản này, trước khi chiếu cảnh của chúng tôi, trước tiên chúng tôi hiển thị cảnh từ góc nhìn của từng ánh sáng, như thể ánh sáng đó là một máy ảnh, lưu trữ độ sâu của từng pixel mà nó nhìn thấy vào kết cấu ngoài màn hình.

Sau đó, khi chúng ta chiếu cảnh, chúng ta có thể so sánh khoảng cách toán học của pixel này từ nguồn sáng so với độ sâu chúng ta ghi được ở pixel tương ứng trong bản đồ bóng. Nếu độ sâu bản đồ bóng nhỏ hơn, thì điều đó có nghĩa là có một bề mặt khác giữa đây và ánh sáng và thay vào đó chúng ta vẽ pixel này trong bóng tối.

Có rất nhiều kỹ thuật tuyệt vời để làm cho các bóng dựa trên bản đồ này trông đẹp hơn, với ít tạo tác / răng cưa hơn, nhưng bây giờ tôi sẽ phủ bóng lên chúng. Chỉ cần nói rằng, nói chung họ cũng không miễn phí.

Bởi vì điều này đòi hỏi phải hiển thị (tối đa) toàn bộ cảnh một lần nữa từ phối cảnh của mỗi ánh sáng - tối đa sáu lần nếu đó là một điểm sáng chiếu theo mọi hướng {bắc, nam, đông, tây, lên, xuống}, và chúng ta cần phải chiếu lại - Hoàn thành bản đồ bóng bất cứ khi nào một thứ gì đó di chuyển, điều này có thể rất tốn kém.

Vì vậy, các trò chơi thường sẽ tập trung ngân sách kết xuất của họ vào các ánh sáng quan trọng nhất trong cảnh - như ánh sáng mặt trời định hướng - để đảm bảo chúng có bóng đẹp. Những ánh sáng nhỏ, ngắn ngủi, nhỏ như đèn flash của vụ nổ thường được tha thứ nếu chúng rò rỉ qua các vật cản một chút. Thường thì điều này hợp với người chơi hơn là một cú huých trong khung hình do chi phí kết xuất tăng đột ngột từ tất cả các phép tính và kết xuất bản đồ bóng tối bổ sung. Đặc biệt nếu đó là một cảnh hành động bận rộn, nơi sự trôi chảy quan trọng hơn sự hoàn hảo của pixel.


3
Một nếp nhăn khác là trong khi việc tìm ra một nguồn sáng ở phía trước hoặc phía sau một bề mặt, việc ngăn các bề mặt phát sáng khi được chiếu sáng từ phía sau thường sẽ mang lại kết quả trông kỳ lạ.
supercat

Và điều này đặc biệt đúng với các hiệu ứng hạt (mà vụ nổ có lẽ là, ít nhất là một phần), vì các hạt cần phải đặc biệt rẻ để xử lý để rất hữu ích.
Luaan

2
Đèn và hạt là hai thứ khác nhau. Một hạt cũng có thể "rò rỉ" qua một chướng ngại vật, nhưng vì những lý do hoàn toàn khác nhau. Đôi khi một hệ thống hạt cũng sẽ bao gồm một ánh sáng để giúp bán hiệu ứng (nghĩ là lửa trại hoặc đom đóm), nhưng ánh sáng bên trong hiệu ứng hạt vẫn chỉ là ánh sáng, thường không phải là bất kỳ biến thể đặc biệt nào.
DMGregory

2
Một cách tiếp cận khác đối với bản đồ bóngkhối lượng bóng , giúp khắc phục vấn đề răng cưa, nhưng tốn kém hơn: yêu cầu thêm hình học (một đa giác mới trên mỗi cạnh bóng của mỗi đối tượng cho mỗi nguồn sáng), cũng như hiển thị thêm. Tuy nhiên, tôi hy vọng phương pháp lập bản đồ là đủ tốt cho hầu hết các tình huống.
DarthFennec

22

Câu chuyện dài, điều này xảy ra vì lý do hiệu suất.

Khi có đèn sáng trên màn hình, theo mặc định, nó sẽ chiếu sáng tất cả các đối tượng (bị cản trở hay không), do đó, trò chơi sẽ cần phải tính toán thêm để xem đối tượng nào bị ảnh hưởng bởi điều gì.

Điều này dễ dàng hơn để giải quyết trên các vật thể tĩnh bằng cách sử dụng ánh sáng tĩnh và nướng, nhưng điều này không giống với đèn động, giống như vụ nổ như bạn đã lưu ý.

Đối với câu hỏi về phần thưởng của bạn, việc dò tia và giá rẻ không đi cùng một câu. Lý do duy nhất để theo dõi tia chưa được chính thống cho đến bây giờ là hiệu suất. Giả sử tất cả các đèn sử dụng phương pháp dò tia, thì vấn đề này sẽ được "giải quyết", nhưng phải trả giá bằng hiệu suất.


6
Vì vậy, tia truy tìm nhiều thứ cho phim CGI hơn là trò chơi thời gian thực?
Tích lũy

21
@Acccumulation Điều đó đúng. Một khung hình duy nhất của một bộ phim có thể mất hàng giờ để kết xuất, trong khi một trò chơi chỉ có một phần nghìn giây.
NobodyNada - Phục hồi Monica

16
Điều đó nói rằng, các trò chơi đang ngày càng khám phá bằng cách sử dụng raytracing hoặc raymar song song với các kỹ thuật rasterization, để cho rasterizer làm những gì nó giỏi và các tia làm những gì chúng giỏi. Nó không phải là toàn bộ tia của mọi pixel, nhưng bạn vẫn có thể nhận được một số hiệu ứng tuyệt vời theo cách đó.
DMGregory

2
@DMGregory Thật vậy, các trò chơi như Duke Nukem 3D đã sử dụng một biến thể raytracing rất đơn giản - mặc dù nó không được sử dụng cho chiếu sáng động và nó chắc chắn không theo dõi từng pixel trên màn hình (thông thường, nó được thực hiện cho từng cột pixel), và độ phản chiếu và độ trong suốt vẫn là trường hợp đặc biệt thay vì mặc định. Phần mềm kết xuất 3D luôn được chơi với các cách tiếp cận tương tự, đó là phần cứng 3D đã đóng cửa con đường đó (cho đến bây giờ).
Luaan

@Acccumulation Raytracing xuất hiện ở các cấp độ khác nhau, do đó, trong khi các trò chơi có thể vượt lên trên các phần cứng chính, chúng vẫn không thực hiện đủ số lần nảy thứ cấp hoặc nhiều lần trả trên mỗi pixel. Vì vậy, ngay cả khi bạn đã raytrace, bạn vẫn có sự đánh đổi hiệu suất như thế này. Vì vậy, khả năng theo dõi đèn chính vẫn không có nghĩa là bạn có thể đủ khả năng để hiển thị tất cả các đèn phụ.
joojaa
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.