HLSL - Tạo bóng trong 2D


7

Cách mà tôi tạo bóng là bằng kỹ thuật sau: http://www.cirthinzima.com/2010/07/my-technique-for-the-shader-basing-dynamic-2d-shadows/

Nhưng tôi có câu hỏi với HLSL. Cách mà tôi hiện đang làm là, tôi có một hình ảnh đen trắng, trong đó Đen có nghĩa là 'đối tượng' và màu trắng có nghĩa là 'không có gì'. Sau đó tôi làm biến dạng hình ảnh như trong hướng dẫn. Tôi làm điều này với một pixel shader, nhưng thay vì hiển thị ra màn hình, tôi kết xuất thành một kết cấu, trở lại ứng dụng của tôi. Sau đó tôi lấy cái này và tạo bóng, rồi gửi lại cho card đồ họa để hoàn tác biến dạng, sau khi bóng được thêm vào - cái này quay trở lại và tôi có một bóng của bóng. Tôi có thể đặt ontop của hình ảnh gốc này và gửi chúng trở lại card đồ họa, sau đó đặt chúng lên màn hình.

Đối với tôi đây là rất nhiều trở lại. Có cách nào tôi có thể tránh điều này?

Vấn đề mà tôi gặp phải là về cơ bản tôi cần phải đi qua tất cả các vị trí trong kết cấu 3 lần và sử dụng kết cấu mới mỗi lần thay vì kết cấu ban đầu. Tôi đã cố đọc lên Passes, nhưng tôi không nghĩ rằng mình đang đi đúng hướng ở đó.

Cứu giúp?

Câu trả lời:


2

Tôi đã nghiên cứu phương pháp của Catalin khá lâu. Vấn đề với phương pháp này là pixel hoàn hảo. Điều đó đòi hỏi rất nhiều công việc trong pixel shader để hoạt động, mặc dù có hiệu quả rất lớn.

Một cách nhanh hơn để tạo bóng là thông qua trình tạo bóng đỉnh. Tôi đã thử Krypton và đang nghĩ đến việc thêm lưới bóng vào nội dung của mình chỉ để sử dụng nó. Video


0

Điều tốt nhất bạn sẽ có thể làm là có hai đèn.

Bạn sẽ nhận thấy ở một trong các bước sau, biến dạng của vị trí nằm ngang được lưu trữ trong kênh màu đỏ và vị trí dọc được lưu trữ trong kênh màu xanh lá cây. Các kênh màu xanh lam và alpha hiện không được sử dụng, có nghĩa là về cơ bản bạn có thể thực hiện trình đổ bóng này trên hai nguồn sáng.

Đó là một shader thực sự phức tạp và đắt tiền, vì vậy tôi không nghĩ rằng bạn sẽ có thể cắt ra nhiều hơn có thể một bước.

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.