Skip to content

This is a small physically based rendering system implemented in Julia and benchmarked against Python and C++ implementations

License

Notifications You must be signed in to change notification settings

KaiErikNiermann/PBRT.jl

Repository files navigation

PBRT.jl

This project is an exploration into the viability of Julia for use in physically based rendering as compared to Python (py_src) and C++ (cpp_src) when looking at optimization strategies and overall performance. A secondary goal is to gain some insights into how to effectively apply language APIs for larger projects, in this case jluna for C++ and juliacall for Python.

Installation

If you don't have julia installed, you can download it here.

  1. Clone the repository

    git clone https://github.com/KaiErikNiermann/julia-bsc-thesis.git
  2. Build the Dockerfile

    docker build -t pbrt-runner .
  3. Either mount to the Docker container or attach to it

    option 1 - Mounting to the container

    docker run -v $(pwd):/mnt -it pbrt-runner

    option 2 - Attaching to the container

    Install the Dev Containers extension for VScode, and then just attach to the running container.

Directories explained

Directory Description
build Contains compiled binaries and build artifacts for the cpp PBRT implementation
cpp_src Contains C++ source code files for the project, uses CMake for compilation.
docs Project documentation using Documenter.jl
logs Stores any log files for the PBRT implementation (e.g. memory profiling)
notebooks Contains Jupyter notebooks for benchmarking, debugging, and other analysis
paper Cotnains the main research paper and research proposal
py_src Contains Python source code files for the project ; project uses poetry
scenes Stores scene files in the wavefront object format (.obj)
src Contains the main source code for the project, in Julia.
test Constains tests for the main Julia implementation

Scripts explained

Script Description
install_deps.sh (local setup) Script to install dependencies for the C++ project.
setup.sh (local setup) Setup script for initializing or configuring the project environment w/o docker
opt-tools.sh (optional) Shell script for setting up optional tools nice to have for development
install-extensions.sh (recommended) Script that installs the extensions that I recommend using for the project, they should allow you to interact with any part of the project
update-ext.sh (optional) Script that updates the extension installer with the current extensions

About

This is a small physically based rendering system implemented in Julia and benchmarked against Python and C++ implementations

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published