-
Notifications
You must be signed in to change notification settings - Fork 15
Raytracing Show and Tell
We began our meeting in our new home: the Yellowstone meeting room of Future Learn. We were greeted by @tomstuart, two loaves of bread, a rather blunt bread knife, a selection of beverages and a strange waiting room with a towel in it.
@tuzz kicked things off by composing a Computation Club theme song on the spot:
After some obligatory faffing with HDMI cables and USB-C dongles, we began to review what the club had been up to both inside and outside of our recent meetings on raytracing, initially based on Matt Pharr, Wenzel Jakob and Greg Humphreys' "Physically Based Rendering: From Theory To Implementation".
In @leocassarani's absence, @tomstuart showed us the club's first attempt at a raytracer: Raymond and Tom's fork of it with a minimap. We recapped that this was based on our reading of the introduction from the book and featured a few fundamental concepts:
- The eye
- The film
- Light sources
- Spheres
We heard that the club had since gone on to mob a new raytracer called "raze" which formed the basis of all subsequent experiments including implementing reflections and materials with different reflective properties.
With that, @tuzz took to the screen and ran us through the various projects he had built along the way.
He began with a faithful translation of the book's pbrt
program in Rust called ray-tracer. He explained how he had used this to improve his idiomatic Rust knowledge but also to try to remain close to the book's implementation. He highlighted his implementation of typed vectors of various sizes as something he was keen to explore in Rust.
However, having been dazzled by @leocassarani's more visual efforts, @tuzz then switched:
- https://github.com/tuzz/starlight
- https://github.com/tuzz/moonlight
- https://github.com/tuzz/pbrt
- https://github.com/tuzz/vivid
- Home
- Documentation
- Choosing a Topic
- Shows & Tells
- Miscellaneous
- Opt Art
- Reinforcement Learning: An Introduction
- 10 Technical Papers Every Programmer Should Read (At Least Twice)
- 7 More Languages in 7 Weeks
- Lua, Day 1: The Call to Adventure
- Lua, Day 2: Tables All the Way Down
- Lua, Day 3
- Factor, Day 1: Stack On, Stack Off
- Factor, Day 2: Painting the Fence
- Factor, Day 3: Balancing on a Boat
- Elm, Day 1: Handling the Basics
- Elm, Day 2: The Elm Architecture
- Elm, Day 3: The Elm Architecture
- Elixir, Day 1: Laying a Great Foundation
- Elixir, Day 2: Controlling Mutations
- Elixir, Day 3: Spawning and Respawning
- Julia, Day 1: Resistance Is Futile
- Julia, Day 2: Getting Assimilated
- Julia, Day 3: Become One With Julia
- Minikanren, Days 1-3
- Minikanren, Einstein's Puzzle
- Idris Days 1-2
- Types and Programming Languages
- Chapter 1: Introduction
- Chapter 2: Mathematical Preliminaries
- Chapter 3: Untyped Arithmetic Expressions
- Chapter 4: An ML Implementation of Arithmetic Expressions
- Chapter 5: The Untyped Lambda-Calculus
- Chapters 6 & 7: De Bruijn Indices and an ML Implementation of the Lambda-Calculus
- Chapter 8: Typed Arithmetic Expressions
- Chapter 9: The Simply-Typed Lambda Calculus
- Chapter 10: An ML Implementation of Simple Types
- Chapter 11: Simple Extensions
- Chapter 11 Redux: Simple Extensions
- Chapter 13: References
- Chapter 14: Exceptions
- Chapter 15: Subtyping – Part 1
- Chapter 15: Subtyping – Part 2
- Chapter 16: The Metatheory of Subtyping
- Chapter 16: Implementation
- Chapter 18: Case Study: Imperative Objects
- Chapter 19: Case Study: Featherweight Java
- The New Turing Omnibus
- Errata
- Chapter 11: Search Trees
- Chapter 8: Random Numbers
- Chapter 35: Sequential Sorting
- Chapter 58: Predicate Calculus
- Chapter 27: Perceptrons
- Chapter 9: Mathematical Research
- Chapter 16: Genetic Algorithms
- Chapter 37: Public Key Cryptography
- Chapter 6: Game Trees
- Chapter 5: Gödel's Theorem
- Chapter 34: Satisfiability (also featuring: Sentient)
- Chapter 44: Cellular Automata
- Chapter 47: Storing Images
- Chapter 12: Error-Correcting Codes
- Chapter 32: The Fast Fourier Transform
- Chapter 36: Neural Networks That Learn
- Chapter 41: NP-Completeness
- Chapter 55: Iteration and Recursion
- Chapter 19: Computer Vision
- Chapter 61: Searching Strings
- Chapter 66: Church's Thesis
- Chapter 52: Text Compression
- Chapter 22: Minimum spanning tree
- Chapter 64: Logic Programming
- Chapter 60: Computer Viruses
- Show & Tell
- Elements of Computing Systems
- Archived pages