Tôi đang trong quá trình thực hiện sự tán xạ khí quyển của các hành tinh từ không gian. Tôi đã sử dụng shader của Sean O'Neil từ http://http.developer.nvidia.com/GPUGems2/gpugems2_ch CHƯƠNG16.html làm điểm bắt đầu.
Tôi có khá nhiều vấn đề tương tự liên quan đến fCameraAngle ngoại trừ với trình tạo bóng SkyFromSpace trái ngược với trình tạo bóng GroundFromSpace như ở đây: http://www.gamedev.net/topic/621187-sean-oneils-at Khíheric-scattering /
Tôi nhận được các vật phẩm lạ với bầu trời từ shader không gian khi không sử dụng fCameraAngle = 1
trong vòng lặp bên trong. Nguyên nhân của những cổ vật này là gì? Các vật phẩm biến mất khi fCameraAngle bị giới hạn ở 1. Tôi dường như cũng thiếu màu sắc có trong hộp cát của O'Neil ( http://sponeil.net/doads.htmlm )
Vị trí camera X = 0, Y = 0, Z = 500. GroundFromSpace ở bên trái, SkyFromSpace ở bên phải.
Vị trí camera X = 500, Y = 500, Z = 500. GroundFromSpace ở bên trái, SkyFromSpace ở bên phải.
Tôi thấy rằng góc máy ảnh dường như xử lý rất khác nhau tùy theo nguồn:
Trong các shader gốc, góc camera trong SkyFromSpaceShader được tính như sau:
float fCameraAngle = dot(v3Ray, v3SamplePoint) / fHeight;
Trong khi ở mặt đất từ không gian đổ bóng, góc camera được tính như sau:
float fCameraAngle = dot(-v3Ray, v3Pos) / length(v3Pos);
Tuy nhiên, nhiều nguồn tin trực tuyến khác nhau với phủ định các tia. Tại sao lại thế này?
Đây là một dự án C # Windows.Forms thể hiện vấn đề và tôi đã sử dụng để tạo các hình ảnh: https://github.com/ollipekka/At KhíhericScatteringTest /
Cập nhật: Tôi đã phát hiện ra từ dự án ScatterCPU được tìm thấy trên trang web của O'Nilil rằng tia camera bị phủ định khi camera ở trên điểm bị bóng mờ để độ tán xạ được tính từ điểm đến camera.
Thay đổi hướng tia thực sự sẽ loại bỏ các vật phẩm, nhưng đưa ra các vấn đề khác như được minh họa ở đây:
Hơn nữa, trong dự án ScatterCPU, O'Neil bảo vệ chống lại các tình huống trong đó độ sâu quang học cho ánh sáng nhỏ hơn 0:
float fLightDepth = Scale(fLightAngle, fScaleDepth);
if (fLightDepth < float.Epsilon)
{
continue;
}
Như đã chỉ ra trong các bình luận, cùng với những tạo tác mới này, điều này vẫn còn để lại câu hỏi, có gì sai với những hình ảnh mà camera được đặt ở vị trí 500, 500, 500? Cảm giác như quầng sáng tập trung vào phần hoàn toàn sai của hành tinh. Người ta kỳ vọng rằng ánh sáng sẽ ở gần vị trí mà mặt trời chiếu vào hành tinh hơn là nơi nó thay đổi từ ngày sang đêm.
Dự án github đã được cập nhật để phản ánh những thay đổi trong bản cập nhật này.