https://github.com/kaierikniermann/julia-rt
Ray Tracing in Julia: A project exploring the fundamentals of ray tracing, using the Julia programming language.
https://github.com/kaierikniermann/julia-rt
julia raytracing
Last synced: 26 days ago
JSON representation
Ray Tracing in Julia: A project exploring the fundamentals of ray tracing, using the Julia programming language.
- Host: GitHub
- URL: https://github.com/kaierikniermann/julia-rt
- Owner: KaiErikNiermann
- Created: 2023-07-09T05:50:11.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2023-08-06T14:04:31.000Z (almost 3 years ago)
- Last Synced: 2025-01-12T15:11:28.393Z (over 1 year ago)
- Topics: julia, raytracing
- Language: Julia
- Homepage:
- Size: 19.8 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Ray Tracing - Julia
[](https://julialang.org/downloads/oldreleases/#v192)
This project is an exploration into ray tracing using the Julia programming language. I included the intermediary steps following the [_Ray Tracing in One Weekend_](https://raytracing.github.io/books/RayTracingInOneWeekend.html) guide in the `scripts` folder, along with some explanation for each of the files to document anything of interest. The final ray tracer resides `src` folder.
## Motivation
There are various reasons I've wanted to do this.
For a while I have been interested in Julia and I thought this project would be a nice way to learn the language.
Additionally I thought this would be a nice way to solidify certain concepts in linear algebra and geometry.
And finally there is the obvious aspect of gaining some nice insights into the basics of ray tracing and computer graphics.
## Progression
### Basic sphere
Generated with `julia scripts/basic_sphere.jl`

### Surface normals
Generated with `julia scripts/basic_normals`

### Surface normals with AA
Generated using `scripts/basic_proj` @ commit `257c5cd3cbf507299bcb9677d786cb984bb66bd0`

### Lambertian
Generated using `scripts/basic_proj` @ commit `cee94f5dd9f1c15bfea6616898079167c33d4b8d`

### Fuzzed metals
Generated using `scripts/basic_proj` @ commit `988b814b8a6d8f9ecb5b996979471f70d4fe3523`

### Refraction
Generated using `scripts/basic_proj` @ commit `988b814b8a6d8f9ecb5b996979471f70d4fe3523`

## References
- [_Ray Tracing in One Weekend_](https://raytracing.github.io/books/RayTracingInOneWeekend.html)
- [_Linear Algebra and its Applications_](https://www.pearson.com/en-us/subject-catalog/p/linear-algebra-and-its-applications/P200000006235)
- [_Julia Documentation_](https://docs.julialang.org/en/v1/)
- [_Computer Graphics from Scratch_](https://gabrielgambetta.com/computer-graphics-from-scratch/)