Gần đây trong khi tìm kiếm giải quyết vấn đề mụn trứng cá của ánh xạ bóng truyền thống, tôi đã thực hiện các bản đồ bóng theo cấp số nhân. Nó đã thực hiện thủ thuật (không có mụn trứng cá nào) nhưng đồng thời đưa ra các lỗi không thể chấp nhận khác.
Để làm mờ bản đồ độ sâu, tôi sử dụng độ mờ gaussian với sigma nhỏ nhất = 1.
Kiểm tra bản đồ bóng:
float occluder = texture(shadowMap lightCoords.xy).r;
float c = 5000.0;
float receiver = lightCoords.z;
float shadow = exp(c*(occluder-receiver));
shadow = clamp(shadow, 0.0, 1.0);
với hệ số c nhỏ c=100.0
:
Chảy máu nhẹ không thể chấp nhận
với hệ số c cao c=5000.0
:
Không chảy máu nhẹ nhưng chi tiết tần số cao xuất hiện "sưng".
Không thể tìm thấy tối ưu c - chảy máu nhẹ xuất hiện ngay cả tại c=3000.0
và lỗi bóng tần số cao đã có sẵn. Không làm mờ bản đồ độ sâu giúp nhưng sau đó răng cưa xảy ra.
Và câu hỏi của tôi là - làm thế nào tôi có thể cải thiện kỹ thuật này (ESM) hoặc tôi nên tìm một kỹ thuật khác? Tôi nghĩ rằng bóng chất lượng tốt với hiệu suất tốt chắc chắn là có thể - như đã thấy trong các trò chơi hiện đại như Witcher 3 hoặc Fallout 4.