InsploRay is a CPU based path tracing renderer. It is currently in an early stage of development.
InsploRay: Inspire(inspiration) + Explore(Exploration) + Ray Tracing
The primary goal of writing a path tracer was to get a head start before getting into low level systems programming, which now grew into a project of its own. It’s being designed with modularity in mind.
- Ray sphere intersection
- Ray Triangle Intersection (Möller–Trumbore algorithm)
- Lambertian Diffuse (Only)
- EXR skybox support (for HDR environment lighting and background)
- Multithreaded
- Simulate a PinHole Camera
- Very Basic material system
- Albedo
- Emissive Color
- Emissive Strength
- Metallic (only Isotropic)
- BVH (Binned SAH building)
- Basic Tone Mapping
- More under way✨...
🖼️ Frontend (Experimental not main focus of the project) Though viewport and interactivity is not the primary goal. However, the frontend currently supports the following features with caveats talked later:
- Interactive viewport (
WASDQEfor movement,right-click + mousefor look-around) - Adjustable pinhole camera parameters
- Simple scene editor (currently supports spheres and materials only)
There is currently no packaged binary for Insploray. For reasons read more! But you can experience the frontend I talked about previously by following steps:
git clone https://github.com/libsugat/InsploRay.git
cd InsploRay cargo run # for debug buildor
cargo run --release # for release/optimized buildThe structure is a Cargo Workspace. Currently containing two main components/crates.
InsploRay(core renderer) with folder namecore-enginethe interactive frontendwhich is a basic window and imgui UI with folder namefrontend
- Open an issue first if you want to work on something — bug, feature, or idea. (Just make sure there are no duplicate issues.)
- Then, make the changes and open a pull request (PR).
- Keep PRs small and focused if possible — it makes things easier to understand.
- Code formatting using
clippyis appreciated.
⚠️ Few small constraints:
Please keep performance and readability in mind.
Avoid excessive type casting — e.g., useusizeonly for indexing; otherwise prefer types likeu32, etc. Maintain clean build (no build warnings)
That’s it for now! No strict rules — I’m here to learn too, and happy to figure things out with you as we go. 💬
Feel free to ask questions, suggest changes, or just explore the code!
- The specular bsdf is i think incorrect, same story with DeltaGlass
Order unknown because I am BTech student unable to manage my time corrently....
- Ray Triangle Intersection
- Loading Scene (.obj`)
- Loading Scene (
.glb/.gltf) - Specular BRDF
- Metallic BRDF (Isotropic)
- Metallic BRDF (Anotropic)
- Better Scene Representation in memory
- Save Image (
EXRand/orPNG) - MIS (Multiple Importance Sampling) in Primary (or currently only) Integrator
- BVH (Binned SAH)
Licensed under AGPLv3.
For closed-source, commercial, SaaS, or academic use without attribution, please contact via Github Issues
This project was started by me (@libsugat) — who knew nothing about rendering or graphics programming when it began!