El Rayail es un raytracer tipo Monte Carlo basado en el rastreo de rayos Learn en una serie de fin de semana usando Rust. Fue bifurcado del proyecto REMDA, que implementa las características de los dos primeros libros de la serie. He intentado agregar las características del tercero, pero tengo dudas de que mi código es realmente correcto, incluso que las imágenes resultantes se ven bien.
Además, el raysnail incorpora el código del trazador de rayos QBVH, a saber, el módulo de malla Triangle, la carga de archivos OBJ y el código de material Blinn-Phong.
Más allá del trabajo en curso para incorporar todas las mejoras establecidas en el tercer libro de la serie, llamado "El resto de su vida", hay algunas características que quiero agregar a la cartel de Rays a continuación.
Hay una implementación muy cruda de una ventana de vista previa en este momento en el ejemplo "Preview_SDL2", pero debe separarse más de los ejemplos de escena y los parámetros de línea de comandos para rastrear alguna escena con altura y ancho dados utilizando la vista previa.
Quiero implementar al menos el soporte parcial para el lenguaje de definición de escena de povray (SDL). Lamentablemente, las definiciones de materiales de Povray son muy diferentes de los materiales en la cola de rayos, y puede ser difícil o incluso imposible emular materiales de povray adecuadamente, ejemplos triviales pasados. Al momento de escribir esto, he implementado un analizador SDL muy rudimentario que puede leer definiciones de cámara de povray y esfera (ver SDL/Ejemplo.SDL). Quiero expandir esto para obtener más geometría y definiciones de material, pero probablemente solo admite un subconjunto de las características de Povray SDL.
Como fanático de los fractales 3D, me gustaría implementar algún código de representación fractal. En este momento hay una implementación cruda de Mandelbulb, que hace que solo sea muy baja calidad, pero puede servir como una prueba de concepto de que es posible usar el código de la copia de la cola para representar fractales 3D. Sin embargo, tal vez requiere una interfaz diferente.
Consulte el wiki para obtener una lista completa de características y planes: https://github.com/varkalandar/raysnail/wiki
Si ha instalado óxido y carga, una manera fácil de ejecutar la formación de rayas es este comando:
cargo run -r --bin raysnail -- -w 800 -h 500 --samples 65 --scene sdl/example.sdlGPLV3
Excepto:
example/earth-map.png , descarga de la NASA, cae en el dominio público.