Skip to content

This is a path tracer at a very early stage, a project to learn about systems, opensource, etc right now

License

Notifications You must be signed in to change notification settings

libsugat/InsploRay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

InsploRay (Path Tracer)

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.

🧩 Current Features:

  • 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 (WASDQE for movement, right-click + mouse for look-around)
  • Adjustable pinhole camera parameters
  • Simple scene editor (currently supports spheres and materials only)

⚠️ Limitations and caveats apply — see below.

⚙️ Installation and Usage

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:

Step 1: Clone the repository

  git clone https://github.com/libsugat/InsploRay.git
  cd InsploRay

Step 2: Compile/Build and run the Code

  cargo run # for debug build

or

  cargo run --release # for release/optimized build

🧰 Project Setup and Development

The structure is a Cargo Workspace. Currently containing two main components/crates.

  • InsploRay (core renderer) with folder name core-engine
  • the interactive frontend which is a basic window and imgui UI with folder name frontend

🧭 How to Contribute

  • 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 clippy is appreciated.

⚠️ Few small constraints:
Please keep performance and readability in mind.
Avoid excessive type casting — e.g., use usize only for indexing; otherwise prefer types like u32, 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!

🐛 Known issue

  • The specular bsdf is i think incorrect, same story with DeltaGlass

🔜 My Side Plans

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 (EXR and/or PNG)
  • MIS (Multiple Importance Sampling) in Primary (or currently only) Integrator
  • BVH (Binned SAH)

License

Licensed under AGPLv3.
For closed-source, commercial, SaaS, or academic use without attribution, please contact via Github Issues

👤 Author

This project was started by me (@libsugat) — who knew nothing about rendering or graphics programming when it began!

About

This is a path tracer at a very early stage, a project to learn about systems, opensource, etc right now

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages