Skip to content

studio42gmbh/jara

Repository files navigation

GitHub GitHub top language GitHub last commit GitHub issues

JARA

JARA is a educational 100% Java based ray tracer.

The primary focus of this package is to teach and help explore path tracing graphics not performance. Altough certain systemic performance measures like spatial partitioning are put in place to teach these concepts.

If you are interested in some fundamentals about path tracing you can download this presentation: Basic Path Tacing PDF

If you like JARA or have constructive critique dont hesitate to write us directly on info@s42m.de. We are always happy for qualified feedback!

Have a great day!

Benjamin Schiller

"Look up to the stars not down on your feet. Be curious!" Stephen Hawking 1942 - 2018

Features

  • PBR Materials with Textures
  • Transparent Materials
  • Custom Procedural Materials
  • Load OBJ Files (using own lightweight ANTLR based parser)
  • Camera with depth of field
  • Spatial Optimization (ongoing)
  • Primitives: Sphere, Plane, Triangle, Disc
  • Lighting by either ambient and directional light (creating algorithmic background) or 360 backgrounds

Future Plans

  • Support for .HDR file format for backgrounds
  • Optimize spatial optimization
  • Optimize handling of high intensity differences in rendering by allowing non linear mappings into RGB space
  • Add configurable denoising
  • Add configurable post FX
  • Allow dynamic settings and camera in app
  • Provide file based scenes either using default file format or little own format
  • Allow dynamic texture handling for supporting more materials in the same scene
  • Split materials (data) from shaders (algorithms) to allow easier customization
  • Add tutorials

Examples

Example Car Car loaded as OBJ exported from Blender (see source here)

Example House House loaded as OBJ exported from Blender (see source here)

Example Spheres Example showing different materials (see source here)

Example Chair Chair loaded as OBJ exported from Blender (see source here)

Example Transparent Example showing transparency (see source here)

Heros Substance User contribution from Ondrej Wolf (Thx! :))

Example Pearls Example Pearls (see source here)

Materialdemo Metalness (Bottom 0.0 - Top 1.0) and Roughness (Left 0.0 - Right 1.0) (see source here)