HLSL Shader nhựa mờ


12

Tôi đang cố gắng tạo ra một shader để sao chép một vật thể bằng nhựa màu trắng với ánh sáng màu bên trong. Hoặc bằng cách có một bóng đổ sẽ trong mờ và nếu tôi đặt một ánh sáng bên trong vật thể, ánh sáng sẽ chiếu xuyên qua hoặc bằng một bóng đổ làm giả hiệu ứng của ánh sáng bên trong.

Hiệu ứng tôi đang sử dụng giống như một ánh sáng xuyên qua bóng đèn tương tự như những bức ảnh này:

văn bản thay thế văn bản thay thế văn bản thay thế

Lý tưởng nhất là tôi có thể kiểm soát cường độ và màu sắc của ánh sáng để khiến nó phát xung và xoay qua một số màu fluro sáng đẹp

Mặc dù tôi không chắc bắt đầu từ đâu!

Câu hỏi của tôi là có ai biết các kỹ thuật tôi nên nghiên cứu để có thể tạo ra một shader như vậy hoặc có một ví dụ về shader tương tự / tương tự mà tôi có thể sử dụng làm điểm bắt đầu không? Hoặc thậm chí nếu bạn muốn cung cấp một shader có thể thực hiện công việc

Câu trả lời:


10

Đây là một hiệu ứng được gọi là "Phân tán bề mặt phụ".

Có một ví dụ về triển khai không gian màn hình của điều này trong cuốn sách "GPU Pro: Kỹ thuật kết xuất nâng cao" phù hợp cho sử dụng thời gian thực.


0

Tôi không biết HLSL vì vậy tôi không thể đưa ra câu trả lời chính xác. Những gì bạn cơ bản có thể làm là thiết lập màu sắc của từng mảnh tùy thuộc vào khoảng cách từ nguồn sáng (bỏ qua bất kỳ bóng tự nào).

Trong mã giả, nó sẽ giống như thế này:

Fragment_color = light_int Mật độ * trong suốt_color * lightource_color / (suy hao * distance_to_lightource ^ 2)

Bạn cũng có thể muốn sử dụng một yếu tố suy giảm tuyến tính ngoài bình phương để ánh sáng lan rộng hơn.


0

Có phải ánh sáng cần để có thể di chuyển, và vật thể có cần phải biến dạng / animate không? Nếu cả hai điều này đều không đúng, một cách rẻ tiền để làm điều này sẽ là áp dụng bản đồ kết cấu đơn sắc trên vật thể hoạt động như một mặt nạ cho ánh sáng; trong shader bạn sẽ lấy mẫu họa tiết này, nhân nó với màu sáng / cường độ hiện tại và thêm vào màu đầu ra.

Câu hỏi tiếp theo rõ ràng là làm thế nào bạn sẽ tạo ra kết cấu này? Bạn có thể thử vẽ nó, nếu bạn có quyền truy cập vào một nghệ sĩ hoặc có thể tự vẽ họa tiết. Nó cũng có thể được kết xuất bởi một công cụ ngoại tuyến bằng cách sử dụng raytracing hoặc một số thứ như vậy. Mặc dù vậy, tôi không đủ quen thuộc với các công cụ raytracing để cho bạn biết chi tiết cách thiết lập nó.

Một cách tiếp cận khác có thể là viết một shader lấy mẫu ánh sáng phía sau nó, sử dụng bề mặt đảo ngược bình thường trong phương trình bóng khuếch tán Lambert thông thường; sau đó bạn sẽ nhân nó với một số yếu tố mặt nạ như 0,5 hoặc hơn và thêm vào màu đầu ra. Điều này sẽ cho phép di chuyển linh hoạt ánh sáng hoặc hình học và không yêu cầu họa tiết, nhưng có lẽ bạn sẽ không nhận được kết quả đẹp như kết xuất ngoại tuyến.

Về tán xạ dưới bề mặt: Tôi không nghĩ đó chính xác là những gì muốn ở đây vì tất cả các thuật toán SSS cho đồ họa mà tôi thấy được thiết kế cho ánh sáng đến từ bên ngoài bề mặt, nảy xung quanh một chút và thoát ra một lần nữa, trong khi ở đây ánh sáng ở bên trong .

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.