Làm thế nào tôi có thể thực hiện một chùm ánh sáng tiết lộ?


7

Trong SEARCHLIGHT, bạn điều khiển một tia sáng chiếu sáng những kẻ thù đang đến mà không nhìn thấy được trên bầu trời đêm. Đây là một minh họa:

Hình minh họa

Làm thế nào tôi có thể làm điều này, tốt nhất là trong Unity? Tôi tưởng tượng điều này ít về ánh sáng và nhiều hơn về shader, nhưng tôi không chắc về chi tiết. Thực tế là tôi biết rất ít về các shader mã hóa làm cho nó tồi tệ hơn.

Nếu đó về shader, các chi tiết cụ thể là gì? Có một hình tứ giác kéo dài di chuyển với shader đã nói được áp dụng cho nó, hoặc có lẽ sử dụng Line Renderer là một lựa chọn tốt hơn?

Là người mới bắt đầu, tôi có thể cố gắng đạt được hiệu quả tương tự, hay tôi nên để nó khi tôi tốt hơn?

(PS: Trò chơi được thực hiện trong Unity. Đây là trang itch.io của nó.)

Câu trả lời:


9

Một cách để thực hiện một hiệu ứng như thế này là với bộ đệm stpson .

Đây là một vài bit bổ sung mà trình kết xuất giữ xung quanh cho mỗi pixel trong mục tiêu kết xuất, mà bạn có thể sử dụng cho ghi chú đầu về những gì bạn đã vẽ ở đó hoặc được phép vẽ sau đó.

Bạn có thể tạo một shader mới bằng cách sử dụng một trong các mẫu dựng sẵn của Unity và thêm một số thao tác stprint vào đầu SubShaderhoặc Passphần:

Stencil {
    Ref 1
    Comp always
    Pass replace
}

Điều này nói rằng "ghi 1 vào bộ đệm stpson, bất kể cái gì đã có trước đó" - đặt cái này lên bộ đổ bóng / vật liệu mà bạn sử dụng để kết xuất chùm tia sáng của bạn và nó sẽ đánh dấu tất cả các pixel trên màn hình mà nó chạm vào.

Sau đó, đối với các vật thể chỉ xuất hiện bên trong chùm sáng, hãy sử dụng:

Stencil {
    Ref 1
    Comp equal
}

Việc kiểm tra này để xem liệu ma thuật số 1 đã được ghi vào pixel này trước đó chưa (ví dụ: pixel này có được chiếu sáng bởi chùm sáng không?) - nếu không, shader sẽ hủy bỏ hiển thị pixel này của đối tượng, cắt gọn nó vào vùng được chiếu sáng của màn hình của bạn.

Hãy chắc chắn rằng các đối tượng của bạn đọc thông tin stprint sẽ hiển thị sau trong hàng đợi hơn các đối tượng viết nó, vì vậy thông tin đã sẵn sàng cho chúng khi chúng tìm kiếm nó.

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.