Introduction

Photon is a simple Monte-Carlo path tracer made out of my personal interest in computer graphics. The engine served as a playground as I learned and tried to implement new graphics stuff. The core of the renderer is written in Java, and supports path tracing primarily. Its acceleration structure is a kD-tree with optimal SAH splits (when filled with triangle mesh). The material system is based on Cook-Torrance BSDF, which is famous for its physics-based derivation and modulable surface roughness.

List of Main Features

  • Primitive intersection test
    • Ray-sphere intersection
    • Ray-triangle intersection
  • Anti-aliasing samples
  • kD-tree with optimal SAH splits
  • Physically based materials
    • Lambertian diffuse
    • Cook-Torrance microfacet model (both BRDF & BTDF variants)
    • Supports MERL BRDF database
  • Texture for material & emission
  • Fully support .obj model (with .mtl loading)
  • Dynamic camera control during rendering (WASD-style movement)

Images

Crytek Sponza
Golden Stanford Dragon
Classic Material Matrix
Transparent Stanford Bunny
Stanford Dragon with MERL Material (gold paint)

More on the Project

  • This is an open-source project. Full source code available.