Xử lý nhiều đèn trong một cảnh (có shader)


9

Tôi tò mò về cách xử lý nhiều ánh sáng trong một cảnh. Đưa ra một bản đồ rất lớn trong một trò chơi nhập vai, với ngục tối (có đèn ở đó), v.v. Tôi biết về ánh sáng bị trì hoãn, nhưng điều đó chỉ trả lời làm thế nào để kết xuất nhiều ánh sáng. Nhưng câu hỏi của tôi là nhiều hơn: Làm thế nào để không hiển thị nhiều đèn. Rõ ràng là mong muốn chỉ hiển thị ánh sáng ảnh hưởng đến cảnh, nhưng tôi không biết một kỹ thuật / thuật toán để lưu trữ này. Không ai muốn hoặc thậm chí có thể hiển thị đèn 500 điểm, chỉ vì có một nơi nào đó trên bản đồ. Nhưng người ta không thể lấy một đường thẳng từ ánh sáng đến người chơi và kiểm tra xem có thứ gì ở giữa không. Khoảng cách cũng không giống như một chỉ báo tốt. (Ánh sáng mặt trời?)

tl; dr: Làm thế nào tôi có thể tìm ra ánh sáng nào ảnh hưởng đến cảnh chỉ hiển thị chúng?


OpenGL hay DirectX?
kravemir

6
thực tế, 500 đèn sẽ hoàn toàn có thể có với ánh sáng hoãn lại, miễn là bạn không muốn có bóng cho tất cả chúng;)

Ví dụ, đối với dây chằng điểm và hình nón, bạn có thể sử dụng loại bỏ khớp nối - ánh sáng điểm chỉ là một hình cầu. Ánh sáng định hướng được nhìn thấy từ mọi nơi
Kikaimaru

4
@Darkwings Về cơ bản bạn đang mô tả ở đây những gì blubb yêu cầu. Làm thế nào để tôi đi bộ? Chà, tôi nghĩ giải pháp ở đây chỉ là đi bộ! (Làm việc cho tôi.) ;-) "bạn cần biết liệu nguồn đó có đang chiếu sáng thứ gì đó trong tầm nhìn của bạn không." <- Đó chính xác là những gì anh ấy yêu cầu, anh ấy muốn biết làm thế nào anh ấy có thể làm điều đó. ^^ Mặc dù điều hình nón / hình cầu từ Kikaimaru có lẽ hữu ích.
cooky451

1
Đối với OP, việc kiểm tra chế độ xem là không rõ ràng vì anh ta chỉ đề cập đến khoảng cách. Mỗi ánh sáng sẽ có một số thông số để xác định điều đó. Nếu đèn định hướng được sử dụng, chúng sẽ chiếu tới mọi nơi, đèn sân khấu sẽ có vùng mục tiêu (vì vậy nó có thể được giải quyết bằng giao điểm của mặt phẳng véc tơ), v.v. Bạn nên suy nghĩ nhiều hơn về các dòng đèn mà bạn muốn tác động đến cảnh, vì nếu bạn thực sự có rất nhiều ánh sáng thực sự gần nhau, bạn sẽ tốt hơn khi xấp xỉ (để tạo bóng). IE: 100 ngọn nến trên một chiếc đèn chùm cổ có thể được xử lý như một ánh sáng duy nhất.
Darkwings

Câu trả lời:


5

Thậm chí đơn giản hơn khối lượng giới hạn;

Chỉ định bán kính cho mỗi ánh sáng. Khi nói đến việc hiển thị cảnh của bạn, chỉ cần kiểm tra xem khoảng cách giữa các đối tượng cảnh của bạn và mỗi ánh sáng có nhỏ hơn bán kính của ánh sáng không. Nếu vậy, sử dụng ánh sáng, khác, bỏ qua nó.

Chỉ là một phần phức tạp hơn, tùy thuộc vào hiệu suất quan trọng như thế nào:

Bạn cũng có thể thực hiện một loại kiểm tra pha rộng với điều này. Chỉ cần xác định lưới không gian lưu trữ tay cầm với đèn của bạn trên cơ sở ô lưới, sau đó chỉ thực hiện kiểm tra khoảng cách trên các đèn nằm trong các ô trong bán kính tối đa của các đối tượng cảnh của bạn.


5
+1 - Âm thanh đáng ngờ giống như một quả cầu giới hạn;)
Gyan aka Gary Buyn

Hơi muộn một chút ... dù sao đi nữa, đó chính xác là một quả cầu giới hạn. Sử dụng phương pháp đó, bạn vẫn sẽ hiển thị ánh sáng bị che khuất hoàn toàn bởi các bức tường, v.v. và do đó không liên quan đến cảnh. Ngoài ra, không phải mọi ánh sáng đi theo mọi hướng.
Darkwings

5

Cách đơn giản nhất mà tôi có thể nghĩ ra (thành thật mà nói, cách duy nhất tôi nghĩ đến) là cung cấp cho mỗi ánh sáng một âm lượng giới hạn . Nếu âm lượng giới hạn giao nhau với chế độ xem (hoặc âm lượng giới hạn của chế độ xem), hãy áp dụng ánh sáng.

Vẫn có thể có đèn được áp dụng mặc dù chúng không ảnh hưởng đến bất kỳ vật thể nhìn thấy nào nhưng nó rất đơn giản và nhanh chóng. Sắp xếp thông minh biểu đồ cảnh của bạn có thể có nghĩa là chỉ một vài giao lộ kiểm tra loại bỏ hầu hết ánh sáng của bạn (giống như những gì được thực hiện để loại bỏ đối tượng).

Một cái gì đó như mặt trời có thể không có khối lượng giới hạn (để biểu thị nó phải luôn được áp dụng).

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.