Raycasting basics
- Be able to draw pixels to a buffer / screen
- Create types for the world, spheres, planes, materials
- Initialize a world with objects
- Create a Camera + camera axis system
- Create a film in front of the plane and shoot rays through it.
- Cast rays into the world and determine if there’s a hit or not
- Implement multiple bounces
- Implement Emit / Ref / Attenuation etc
Multithreading stuff
- Introduce a function called RenderTile() which want to take the range of X & Y that it will actually use. Also will need to be smarter about writing out to the image. CM uses XMin, YMin, OnePastXMax, OnePastYMax, World, Image
-
Then Ran it from 0, Image.Width, 0, Image.Height
-
Run loop to call it in tiles
-
- World Structure gets bounces computed + tiles retired
- work_queue and work_order introduction
-
work_queue stores a work_order count and work_order *
-
work_order stores the original parameters
-
- Loop now constructs work_orders
- Add another loop that calls rendertile with queue + original parameters
- Refactor rendertile to only take the Queue
- I think because CreateThread only takes a single parameter