Skip to content

Java implementation of Peter Shirley's Ray Tracing in One Weekend book.

Notifications You must be signed in to change notification settings

TwentyFiveSoftware/java-ray-tracing

Repository files navigation

Ray Tracing

Overview

This is my take on Peter Shirley's Ray Tracing in One Weekend book.

This project uses Java and is intended to serve as a reference point in the performance comparison (see below).

Build & Run this project

  1. Clone the repository
  2. Optional: Change sample and thread count in src/main/java/dev/twentyfive/raytracing/RayTracing.java
  3. Build the project
    ./gradlew jar
  4. Run the jar file
    java -jar ./build/libs/java-ray-tracing-1.0.0.jar

Performance

I've already implemented Peter Shirley's ray tracing in various programming languages running on CPU & GPU and compared their performance.

The performance was measured on the same scene (see image above) with the same amount of objects, the same recursive depth, the same resolution (1920 x 1080). The measured times are averaged over multiple runs.

Reference system: AMD Ryzen 9 5900X (12 Cores / 24 Threads) | AMD Radeon RX 6800 XT

1 sample / pixel 100 samples / pixel
Elixir 67,200 ms N/A
JavaScript - Node.js 4,870 ms 308 s
Go 1,410 ms 142 s
OCaml 795 ms 75 s
Java 770 ms 59 s
C++ 685 ms 70 s
Rust 362 ms 36 s
C 329 ms 33 s
GPU - Compute Shader 21 ms 2 s
GPU - Vulkan Ray Tracing Extension 1 ms 0.1 s

About

Java implementation of Peter Shirley's Ray Tracing in One Weekend book.

Topics

Resources

Stars

Watchers

Forks

Languages