tìm kiếm các kỹ thuật ánh xạ bóng chất lượng chấp nhận được


8

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:

nhập mô tả hình ảnh ở đây

Chảy máu nhẹ không thể chấp nhận

với hệ số c cao c=5000.0:

nhập mô tả hình ảnh ở đây

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.0và 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.

Câu trả lời:


2

Thật ra thi không co gi đâu. Tôi đã thực hiện một số nghiên cứu và thực sự sẽ:

  • ESM mẫu bằng cách sử dụng lấy mẫu Poisson theo kiểu PCF (cảm ơn Bart Wronski cho ứng dụng trình tạo mẫu Poisson tuyệt vời) và mở rộng điều này sang kỹ thuật PCSS (penumbra biến). Kết xuất để kết cấu.
  • tùy chọn độ sâu nhận biết độ mờ để làm mềm - EDIT không quá nhanh tùy chọn này không hoạt động như mong đợi, quá tệ. Thay vào đó, nhân PCF có vẻ hoạt động tốt.

Và quá tệ không có nhiều thảo luận ở đây.

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.