Heuristic42
Blog
Opengl
Rendering
Meta
0
created
Apr 7 at 1:56
How AI Presentation Tools Like Havi AI Are Transforming Visual …
In today’s fast-paced digital environment, creating visually co…
–
smithjemimaa
reverted
Mar 2 at 10:03
Why std::move and move semantics?
spam..
–
anonymous
edited
Mar 2 at 1:40
Watches
https://timepiecesunveiled.wordpress.com/ https://timepiecesun…
–
anonymous
comment
Feb 2 at 22:55
Calling Babel from Django for React+JSX
[deleted]
–
anonymous
comment
Jan 12 at 3:20
Matrices
[deleted]
–
anonymous
comment
Dec 19 '25
Matrices
[deleted]
–
anonymous
comment
Dec 16 '25
Making a real EMF Reader
Can you show us what the wires go to please.
–
anonymous
comment
Nov 10 '25
DerBard: Custom Split Mechanical Keyboard Prototype
Hi heuristic42.com Owner.
–
anonymous
comment
Nov 9 '25
Embedding GDB pretty printers, just like natvis
Hello 👋. Welcome 🙂
–
pknowles
comment
Nov 9 '25
Embedding GDB pretty printers, just like natvis
Hello heuristic42.com Administrator.
–
anonymous
edited
Oct 12 '25
Why std::move and move semantics?
For years C++ destructors felt like an academic solution that d…
–
pknowles
comment
Oct 12 '25
Clip Space
Thanks for the reminder. Please see [https://www.heuristic42.co…
–
pknowles
comment
Oct 10 '25
Contributing
I have bilateral carpel tunnel and my Microsoft 4k has a torn c…
–
anonymous
edited
Oct 5 '25
Pages About This Site
... in an effort to keep presented content and self discussion …
–
admin
created
Oct 5 '25
Privacy and Data Collection
This wiki stores a small amount of personal data to function an…
–
admin
comment
Sep 12 '25
Clip Space
Hello, We ran a 30-second scan of your domain and found: - …
–
anonymous
created
Jul 6 '25
Hello Ray, a Hello World Vulkan Ray Tracing Tutorial
\*WORK IN PROGRESS\* Want to do some quick 3D graphics progr…
–
pknowles
created
Jul 3 '25
Why std::move and move semantics?
A few years ago, I was fortunate enough to have Jon Kalb explai…
–
pknowles
edited
Jul 3 '25
3D Rendering (Computer Graphics)
Rendering in 3D computer graphics is computing a 2D image from …
–
pknowles
edited
Jul 3 '25
Heuristic42, A Graphics Programming Website
#[Blog](/blog/) An unstructured assortment of personal graph…
–
pknowles
edited
Jun 23 '25
RAII++ - the powerful implication of always initializing
If you search, most definitions of RAII refer to using "**scope…
–
pknowles
created
Jun 23 '25
RAII++ - the powerful implication of always initializing
If you search, most definitions of RAII refer to using "**scope…
–
pknowles
comment
Jun 14 '25
Matrices
[deleted]
–
anonymous
comment
May 31 '25
Matrices
[deleted]
–
anonymous
…
View All
Log in
CPU Raytracer
leave this field blank to prove your humanity
Article title
*
Article revisions must have a non-empty title
Article body
*
I hear all graphics programmers have made one. Well, after some years of OpenGL so did I. At the time I decided I didn't like the randomness and duplication of typical Monte Carlo raytracers and tried my hand at the older and slower recursive branching kind. The code is still available on [github](https://github.com/pknowles/pyarlib/blob/master/trace.h). Sorry. I started work on a this in Oct 2012, mainly just for fun but also for a comparison to shader based approximations. I'm sure it could be much faster with a GPU. I chose not to use one. I'll post rendering times when I'm good and ready. # Gallery ![enter image description here][1] ![enter image description here][2] ![enter image description here][3] ![enter image description here][4] ![enter image description here][5] ![enter image description here][6] ![enter image description here][7] ![enter image description here][8] ![enter image description here][9] # Debugging Finding good ways to visualize what's happening in 3D graphics is one of the most useful skills. ![enter image description here][10] ![enter image description here][11] ![enter image description here][12] ![enter image description here][13] # Tech At the core of the raytracer is the spatial data structure. I didn't mess around with any BVH nonsense :P. This thing was made to render one mesh only with no animation. I decided I wanted a kd-tree + surface area heuristic (SAH). I then followed and implemented the algorithm described by: *On building fast kd-Trees for Ray Tracing, and on doing that in O(N log N)*. It also includes the technique described in *Tracing Ray Differentials* to anti-aliase texture sampling. You'll note crisp checkerboard filtering in the image of the gold rings despite aliasing at geometry edges. That's just one ray per pixel! [1]: https://img.heuristic42.com/img/d95f7ef7524f.jpg [2]: https://img.heuristic42.com/img/04e5e5fbd6ca.jpg [3]: https://img.heuristic42.com/img/27129cfee4ec.jpg [4]: https://img.heuristic42.com/img/6a02c8586563.jpg [5]: https://img.heuristic42.com/img/dd33bbf1c5b1.jpg [6]: https://img.heuristic42.com/img/334138ea9ca1.jpg [7]: https://img.heuristic42.com/img/a760f01abaea.png [8]: https://img.heuristic42.com/img/64891f82e614.png [9]: https://img.heuristic42.com/img/a97f0b6cfa25.jpg [10]: https://img.heuristic42.com/img/06ddd64cb93c.jpg [11]: https://img.heuristic42.com/img/256fefd9aced.jpg [12]: https://img.heuristic42.com/img/f712616c2a59.jpg [13]: https://img.heuristic42.com/img/3df8c8fb667a.jpg
Toggle Preview
Edit message
*
A description of the changes made
Discard Draft
Save Draft
leave this field blank to prove your humanity
Flag
the thing you clicked
for moderator attention.
Reason choice:
Spam, promoting, advertising without disclosure
Rude, inappropriate, generally offensive
Too arrogant or demeaning to others
Other
Reason:
The reason for raising the flag
Error