A physics-based 3D rendering engine implemented in Java using ray tracing, custom scene descriptions, and multithreaded optimization.
This engine parses structured scene files to construct a 3D environment and renders realistic images using recursive ray tracing. It supports:
- Reflection
- Lighting and shadows
- Basic material models
- Object composition via XML-like scene files
Rendering is parallelized using Javaβs multithreading features to improve performance on modern hardware.
- Language: Java 17
- Core Concepts: Ray tracing, recursive reflection, camera projection
- Optimization: Thread pools and pixel-based work partitioning
- Input format: Custom
.xml-like scene description
- β Scene file parser to define camera, geometries, lights, and materials
- β Ray-object intersection system
- β Recursive ray tracing with reflective surfaces
- β Point and directional lighting with soft shadows
- β Multithreaded rendering pipeline
- β
Exports output as
.pngimage
Java-3D-Scene-Rendering/
βββ src/
β βββ geometries/ # Spheres, planes, triangles, etc.
β βββ lighting/ # Light sources
β βββ renderer/ # Core rendering loop
β βββ scene/ # Scene construction and parsing
β βββ main/ # Application entry point
βββ scenes/ # Sample scene description files
βββ output/ # Rendered image output
βββ README.mdThis project was built as part of a university course in computer graphics and Java systems programming.
Key learning outcomes:
-
Understanding 3D space, vector math, and lighting models
-
Recursive algorithms for ray tracing
-
Scene serialization and deserialization
-
Parallelization in Java
Effie Mincer Computer Science @ JCT | effiemincer.dev
Yehuda Gurovich Computer Science @ JCT