Following the publication of an article on the topic of vector implementation and the discussion that followed on Twitter, I updated the reading list Readings on vector class optimization.
Tag Archives: reading list
Various links on ray tracing
Here are some links related to ray tracing, and more specifically, path tracing.
Some ray tracing related projects or blogs:
 Code & Visuals, by Yining Karl Li, the author of the Takua renderer.
 Iman Sadeghi’s Bi Directional Path Tracing Project Homepage, gives a good introduction to the topic.
 Mitsuba Development Blog. From the description:
Mitsuba is a researchoriented rendering system in the style of PBRT, from which it derives much inspiration. It is written in portable C++, implements unbiased as well as biased techniques, and contains heavy optimizations targeted towards current CPU architectures.
 Nori, an educational ray tracer written in C++.
 Peter Kutz’ Bidirectional Path Tracing and Metropolis Light Transport blog doesn’t seem maintained anymore but still contains interesting articles.
 Ray Tracey’s blog, by Sam Lapere, the author of the Brigade renderer.
 Real time ray tracing, and real time ray tracing part 2, two articles by Matt Swoboda on the making of the demo 5 Faces.
 Smallpt, which I previously mentioned as I experimented with a GLSL version
 Syntopia, where fractals, Lsystems and ray tracing
 wootracer
Some major publications:
 The rendering equation, SIGGRAPH 1986, James T. Kajiya. From the paper:
We present an integral equation which generalizes a variety of known rendering algorithms.
[…]
We mention that the idea behind the rendering equation is hardly new.
[…]
However, the form in which we present this equation is well suited for computer graphics, and we believe that this form has not appeared before.  Bidirectional path tracing, Compugraphics 1993, Eric P. Lafortune and Yves D. Willems. From the paper:
The basic idea is that particles are shot at the same time from a selected light source and from the viewing point, in much the same way. All hit points on respective particle paths are then connected using shadow rays and the appropriate contributions are added to the flux of pixel in question.
 Optimally Combining Sampling Techniques for Monte Carlo Rendering, SIGGRAPH 1995, Eric Veach and Leonidas J. Guibas. From the abstract:
We present a powerful alternative for constructing robust Monte Carlo estimators, by combining samples from several distributions in a way that is provably good.
 Metropolis Light Transport, SIGGRAPH 1997, Eric Veach and Leonidas J. Guibas. From the abstract:
To render an image, we generate a sequence of light transport paths by randomly mutating a single current path (e.g. adding a new vertex to the path).
 Robust Monte Carlo methods for light transport simulation, 1998, Erich Veach PhD thesis (432 pages pdf): it presents bidirectional path tracing, and introduces Metropolis Light Transport and Multiple Importance Sampling. From the abstract:
Our statistical contributions include a new technique called multiple importance sampling, which can greatly increase the robustness of Monte Carlo integration. It uses more than one sampling technique to evaluate an integral, and then combines these samples in a way that is provably close to optimal. This leads to estimators that have low variance for a broad class of integrands. We also describe a new variance reduction technique called efficiencyoptimized Russian roulette.
[…]
The second algorithm we describe is Metropolis light transport, inspired by the Metropolis sampling method from computational physics. Paths are generated by following a random walk through path space, such that the probability density of visiting each path is proportional to the contribution it makes to the ideal image.
Other:
On a slightly different topic, fxguide had a great series of articles on the state of rendering in the film industry, which I previously mentioned.
Reading list on Zbuffer precision
Nathan Reed recently published a blog article plotting his numerical findings of Zbuffer precision under different uses. On the way he references a couple of previous articles, that also reference other resources; I think it’s a good opportunity to list some of them. They all tell a part of the story and I recommend reading all of them to get the complete picture.
 A couple of notes about Z, 2009, by Emil Persson, on why Zbuffer is non linear and how to counter the loss of precision.
 Attack of the depth buffer, 2010, by Matt Pettineo, on visualizing depth buffer error when using different buffer formats.
 Maximizing Depth Buffer Range and Precision, 2012, by Brano Kemen, with a significant part on how OpenGL and DirectX are differently affected by the precision issue (spoiler: OpenGL’s coordinate convention hurts pretty badly in this case; fortunately as Nathan Reed’s article points, an extension now fixes this).
 Depth Precision Visualized, 2015, by Nathan Reed, on visualizing depth buffer precision as a function of distance, when using different buffer formats and Z representations.
Readings on the roles of senior programmer and lead programmer
Here are some of the best articles I have read on the topic. They surely will help you understand what people expect from you and what you should expect from yourself as you become a lead:
 #gamedev Lead Quick Start Guide – Mike Acton
 So they made you a lead; now what? – Oliver Franzke
 The Role of a Senior Developer – Mat Briggs
GDC 2015 presentations
The Game Developers Conference took place last week in San Francisco. As I am starting to see more speakers publish their slides, I am creating this post to keep track of some them (this list is not meant to be exhaustive).
 Advanced VR Rendering, by Alex Vlachos (Valve).
 Code Clinic 2015: How to Write Code the Compiler Can Actually Optimize, by Mike Acton (Insomniac Games).

Doing Math with RGB (and A) Correctly, by Jim Van Verth (Google).
 Great Management of Technical Leads, by Mike Acton (Insomniac Games).

Parallelizing the Naughty Dog engine using fibers, by Christian Gyrling (Naughty Dog).
 Physics for Game Programmers : Numerical Methods, by Erin Catto (Blizzard Entertainment).
 Rendering the World of Far Cry 4, by Steve McAulley (Ubisoft Montréal).
 VR Direct: How NVIDIA Technology is Improving the VR Experience, by Nathan Reed (NVidia).
For a more extensive list, Cédric Guillemet has been garnering links to GDC 2015 papers on his blog.
The rendering tools in the film industry
Here is a list of articles published by fxguide, giving fascinating insights into the tools used by the film industry in terms of rendering.
 Ben Snow: the evolution of ILM’s lighting tools (January 2011)
A presentation of the evolution of the technology and tools used at Industrial Light and Magic, over the course of the years and movies, from the mid90s to nowadays.  Monsters University: rendering physically based monsters (June 2013)
 The Art of Rendering (April 2012)
A description of the different techniques used in high end rendering and the major engines.  The State of Rendering (July 2013): part 1, part 2
A lengthy overview of the state of the art in high end rendering, comparing the different tools and rendering solutions available, their approach and design choices, strengths and weaknesses as well as the consequences in terms of quality, scalability and render time.
(Brace yourselves for the massive tag list hereafter.)
A list of important graphics research papers
I’ll start tweeting about graphics research papers which I think are important to know about for various reasons (in no particular order).
— Tomas AkenineMöller (@inversepixel) September 14, 2013
This is an announcement that got all my attention. Since Twitter is a mess to find anything older than a day, here is the list so far:
 A Characterization of Ten HiddenSurface Algorithms, Sutherland et al., ACM Computing Surveys, 1974
 Survey of Texture Mapping, Paul Heckbert, IEEE Computer Graphics and Applications, 1986
 Rendering Complex Scenes with MemoryCoherent Ray Tracing, Matt Pharr et al., proceedings of SIGGRAPH, 1997
 An Efficient Representation for Irradiance Environment Maps, Ramamoorthi & Hanrahan, proceedings of SIGGRAPH, 2001
 Decoupled Sampling for Graphics Pipelines, RaganKelley et al. ACM Transactions on Graphics, 2011
 The Aliasing Problem in ComputerGenerated Shaded Images, Franklin C. Crow, Communications of the ACM, 1977
 Ray Tracing Complex Scenes, Kay & Kajiya, proceedings of SIGGRAPH, 1986
 Hierarchical Zbuffer Visibility, Greene et al., proceedings of SIGGRAPH, 1993
 Geometry Images, Gu et al., ACM Transactions on Graphics, 2002
 A HiddenSurface Algorithm with AntiAliasing, Edwin Catmull, proceedings of SIGGRAPH, 1978
 Modeling the Interaction of Light Between Diffuse Surfaces, Goral et al., proceedings of SIGGRAPH, 1984
“The first radiosity paper, with the real physical Cornell box (which I’ve actually have seen in real life!)”  Pyramidal Parametrics, Lance Williams, proceedings of SIGGRAPH, 1983
 Rendering synthetic objects into real scenes: bridging traditional and imagebased graphics with global illumination and high dynamic range photography, Paul Debevec, proceedings of SIGGRAPH 2008
“Influence on gfx proportional to title length!”  A parallel algorithm for polygon rasterization, Juan Pineda, proceedings of SIGGRAPH, 1988
 Rendering from compressed textures, Beers et al., proceedings of SIGGRAPH 1996
“This one (out of 3) of the 1st texture compression papers ever! Uses VQ so probably not something you want today, but major eye opener!”  A general version of Crow’s shadow volumes, P. Bergeron, IEEE Computer Graphics and Applications, 1986
“Generalized SV. Nice trick”  Reality engine graphics, Kurt Akeley, proceedings of SIGGRAPH 1993
“Paper describes MSAA, guard bands, etc etc”  The design and analysis of a cache architecture for texture mapping, Hakura and Gupta, proceedings of ISCA 1997
“Classic texture $ paper!”  Deep shadow maps, Lokovic and Veach, proceedings of SIGGRAPH 2000
“Lots of inspiration here!”  The Reyes image rendering architecture, Cook et al., proceedings of SIGGRAPH 1987
“Sooo good & megainfluential!” 
A practical model for subsurface light transport, Jensen et al., proceedings of SIGGRAPH 2001
 Casting curved shadows on curved surfaces, Lance Williams, proceedings of SIGGRAPH 1978
“*the* shadow map paper!”  On the design of display processors, Myer and Sutherland, Communications of the ACM 1968
“Wheel of reincarnation”  Ray tracing JellO brand gelatin, Paul S. Heckbert, Communications of the ACM 1988
 Talisman: Commodity realtime 3D graphics for the PC, Torborg and Kajiya, Proceedings of SIGGRAPH 1996
 A Frequency Analysis of Light Transport, Durand et al., Proceedings of SIGGRAPH 2005
“Very influential!!”  An Ambient Light Illumination Mode (behind a paywall), S. Zhukov, A. Iones, G. Kronin, Eurographics 1998
“First paper on ambient occlusion, AFAIK. Not that old…”