Tôi trễ câu trả lời nhưng tôi đã cố gắng để đạt được điều tương tự và nghĩ rằng tôi muốn chia sẻ các giải pháp tôi đang sử dụng.
Một hiệu ứng tương tự có thể đạt được trong một thao tác vẽ đơn với bóng đổ không phức tạp.
Trong trình đổ bóng đoạn, bạn sẽ tính toán màu của đoạn dựa trên sét và kết cấu cho bạn màu chưa được đánh dấu 'colorA'.
Màu thứ hai của bạn là màu viền, 'colorB'.
Bạn nên lấy mảnh vỡ cho vectơ của máy ảnh, chuẩn hóa nó, sau đó lấy sản phẩm dấu chấm của vectơ này với bình thường của đoạn.
Vectơ thành vector camera đơn giản là nghịch đảo vị trí của mảnh trong không gian mắt.
Màu sắc của đoạn là sau đó:
float CameraFacingPercentage = dot(v_fragmentToCamera, v_Normal);
gl_FragColor = ColorA * CameraFacingPercentage + ColorB * (1 - FacingCameraPercentage);
Đây là ý tưởng cơ bản nhưng bạn sẽ phải chơi xung quanh để có nhiều hơn hoặc ít hơn của màu phác thảo. Ngoài ra, các phần lõm của mô hình của bạn cũng sẽ được đánh dấu nhưng đó cũng là trường hợp trong hình ảnh được đăng trong câu hỏi.
Vì vậy, chúng tôi vẽ đối tượng bằng màu đồng nhất vào kết cấu, sau đó vẽ kết cấu đó lên màn hình bằng trình đổ bóng mờ? – dupersuper
Có, nhưng nó có lẽ không phải là cách duy nhất để làm điều đó. – weltensturm
Đây thực chất là cách nó được thực hiện trên tiêu đề tôi đã làm việc, mặc dù nó đã có vấn đề chậm đối với chúng tôi. Hãy xem xét bao nhiêu màn hình sẽ chứa phác thảo của bạn trước khi cam kết với cách tiếp cận này - có những hiệu ứng rẻ hơn có sẵn để giao tiếp rằng "mô hình này được đánh dấu". Trên một tiêu đề hiện đại, bạn có thể không có tỷ lệ lấp đầy để phụ tùng. – Philip