Hacker News new | ask | show | jobs
by fgeahfeaha 1063 days ago
Other people have mentioned ray-tracing in one weekend

Complimentary to that I would recommend TinyRenderer

https://github.com/ssloy/tinyrenderer/wiki

This one is a CPU-based rasterizing renderer, it gives you a good understanding of what a GPU graphics pipeline does underneath.

In the graphics world the two common ways of rendering things are either rasterization or raytracing.

Raytracing is basically all the movie/VFX/CGI/offline renderers (although it is also being used for certain parts of real-time in recent years)

Raster is how most real-time renderers like the ones used for video games work.

If you're interested in graphics I'd highly recommend implementing a ray-tracer and a rasterizer from scratch at least once to get a good mental model of how they both work.

2 comments

Out of curiosity, is there a third way? The two you mention are the big ones, I know, but your phrasing implies (perhaps unintentionally) the existence of at least one more.
Well there's the "steer a beam across a screen" as used in CRT's (eg. older oscilloscopes) and the Vectrex game console.

Maybe one could consider lasershows falling in this category too?

See "vector display"

vk_mini_path_tracer is a beginner-friendly introduction to writing your own fast, photorealistic path tracer in less than 300 lines of C++ code and 250 lines of GLSL shader code using Vulkan

https://nvpro-samples.github.io/vk_mini_path_tracer/index.ht...