Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 28 million developers.Sign up
Small changes to interactive mode - Add 'fullscreen' flag to GlobalSettings. This way, going fullscreen in interactive mode is optional, and actually defaults to false. - The movement/rotation parameters in the interactive mainloop aren't fixed, so your "movement speed" no longer depends on how long it takes for a frame to render. Instead, the last frame render time is used to scale the constants, so now movement/lookaround behaves more predictably.
Eliminate some divisions in BBox intersection methods. Since divisions by ray.dir.(x|y|z) happen a lot, it's beneficial to compute the reciprocal of ray.dir before the intersection calculation. This is made with a special, augmented Ray class (RRay). The same kind of optimization can be implemented in other parts of the raytracer, but doing it globally makes no sense: RRay::dir and rdir have to be kept in sync, which is too much work to do (esp. through model-view transformations). This optimization sheds about 1.5% of the render time.