The Raysail เป็น Raytracer ประเภท Monte Carlo ตาม การติดตามการเรียนรู้ของการเรียนรู้ Ray ในซีรีย์วันหยุดสุดสัปดาห์หนึ่ง โดยใช้ Rust มันถูกแยกออกจากโครงการ REMDA ซึ่งใช้คุณสมบัติจากหนังสือสองเล่มแรกของซีรีส์ ฉันพยายามเพิ่มคุณสมบัติของสาม แต่ฉันมีข้อสงสัยว่ารหัสของฉันถูกต้องจริง ๆ แม้ว่าภาพผลลัพธ์จะดูไม่เป็นไร
นอกจากนี้ Raysnail ยังรวมรหัสจาก QBVH-rust-ray-tracer คือโมดูลตาข่ายสามเหลี่ยมการโหลดไฟล์ OBJ และรหัสวัสดุ blinn-pong
นอกเหนือจากการทำงานอย่างต่อเนื่องเพื่อรวมการปรับปรุงทั้งหมดที่วางไว้ในหนังสือเล่มที่สามของซีรีส์ชื่อ "ส่วนที่เหลือของชีวิตของคุณ" มีคุณสมบัติบางอย่างที่ฉันต้องการเพิ่มลงใน Raysnail ต่อไป
มีการใช้งานที่หยาบมากของหน้าต่างตัวอย่างในขณะนี้ในตัวอย่าง "preview_sdl2" แต่มันจำเป็นต้องแยกออกจากตัวอย่างฉากและพารามิเตอร์บรรทัดคำสั่งเพื่อติดตามฉากที่มีความสูงและความกว้างที่กำหนดโดยใช้ตัวอย่าง
ฉันต้องการใช้การสนับสนุนอย่างน้อยบางส่วนสำหรับภาษานิยามฉาก Povray (SDL) น่าเศร้าที่คำจำกัดความของวัสดุของ Povray นั้นแตกต่างจากวัสดุใน Raysnail มากและอาจเป็นเรื่องยากหรือเป็นไปไม่ได้ที่จะเลียนแบบวัสดุ Povray อย่างถูกต้องตัวอย่างเล็กน้อยในอดีต ในช่วงเวลาของการเขียนสิ่งนี้ฉันได้ใช้ตัวแยกวิเคราะห์ SDL แบบพื้นฐานซึ่งสามารถอ่านกล้อง Povray และคำจำกัดความทรงกลม (ดู SDL/example.sdl) ฉันต้องการขยายสิ่งนี้สำหรับรูปทรงเรขาคณิตและวัสดุที่แน่นอน แต่มีแนวโน้มว่ามันจะรองรับชุดย่อยของคุณสมบัติ Povray SDL เท่านั้น
ในฐานะแฟนของเศษส่วน 3 มิติฉันต้องการใช้รหัสการเรนเดอร์เศษส่วน ในขณะนี้มีการรวมกันของ Mandelbulb ซึ่งทำให้มีคุณภาพต่ำมากเท่านั้น แต่สามารถใช้เป็นหลักฐานของแนวคิดที่ว่า IUT เป็นไปได้ที่จะใช้รหัส Raysnail เพื่อแสดงผลไม้ 3 มิติ บางทีมันอาจจะต้องใช้ส่วนที่แตกต่างกัน
โปรดตรวจสอบ Wiki สำหรับรายการคุณสมบัติและแผนทั้งหมด: https://github.com/varkalandar/raynail/wiki
หากคุณติดตั้ง Rust และ Cargo วิธีที่ง่ายในการเรียกใช้ Raysnail คือคำสั่งนี้:
cargo run -r --bin raysnail -- -w 800 -h 500 --samples 65 --scene sdl/example.sdlGPLV3
ยกเว้น:
example/earth-map.png , ดาวน์โหลดจาก NASA, ตกอยู่ในโดเมนสาธารณะ