Path-Tracer is a project mainly written in JAVA and COMMON LISP, it's free.
Java based Path Tracer
Daniel Krisher github.com/krisher/Path-Tracer
Any system with JavaSE 1.6 (6.0) or later. Apache Maven 2.2.1 (earlier versions may work) is required to build from source.
The source code is 100% Java, and can be built with Apache Maven.
Run 'maven package' from the top level directory (where this file is found). The build process will create a target/path-tracer-0.9-SNAPSHOT-jar-with-dependencies.jar file that only depends on a Java runtime environment.
The jar file includes a manifest describing the main class and library dependencies. Just run:
java -jar path-tracer-0.9-SNAPSHOT-jar-with-dependencies.jar
from within the dist/ directory. While the raytracer itself uses very little memory, increasing Java's maximum heap size can reduce the load on the garbage collector, and increase performance. You can run something like:
java -Xmx1024m -jar path-tracer-0.9-SNAPSHOT-jar-with-dependencies.jar
The application will start with a simple UI. Follow these steps to use the application:
Enter the ray tracing parameters:
Select a scene from the list.
Press Start. The image will render into the panel to the right of the controls. A progress bar next to the Start button will show the ETA of the completed image.
Once this has completed, you can use the Tone-Mapping controls near the bottom left of the window. Pick a TR operator, and/or modify the midpoint gray value (for Reinhard), and the image to the right will be immediately updated. The original image is preserved so you can change the tone mapping as many times as necessary without re-tracing the scene. You can also specify a desired white-point (as a luminance value), the image will be scaled so that pixels at or above this luminance value map to white, leaving greater range for the darker portions of the image (from Reinhard paper). When using the Reinhard operator/algorithm, you can double click an image pixel to select the corresponding luminance value as the white point.
Finally, press Save to save a copy of the image currently displayed in the UI to a specified png file.
This project uses MiGLayout for the user interface (miglayout.com).
Engine:
Material:
Geometry/Scene:
Lights:
Camera:
Imaging:
Eclipse .project/.classpath files are provided so this can easily be imported into the IDE as an existing project. All of the application source code is contained in src/main/java. 3rd-party libraries are in lib/.
The application's main class is edu.rit.krisher.ui.RTDemo, which defines the scenes that are available for ray-tracing, and launches the main UI.