With NVIDIA's RTX cards out and the company pushing ray tracing, I figured I have a look around at what I could in the graphics community through blog posts and whatnot about ray tracing itself. Then interacting with the community it seems like there are some misunderstandings and perhaps a warped interpretation of what's going on. So this post is a random assortment of thoughts regarding the encounters of others discussing this topic and what my input is.
Ray tracing describes a type of algorithm, but it's not necessary a specific algorithm
The first thing I encountered with looking through literature is that what's called "ray tracing" can be vague. Does it describe a specific algorithm such as heap sorts or fast inverse square or does it describe a class of algorithms like selection sorting or binary search algorithm? Or in another way of thinking, does ray tracing describe something like "storage device" or does it describe something like "NAND-based, SATA solid state drive?"
As far as the usage of the term goes, I'm led to believe that ray tracing is describing a type of algorithm. That is, the basic algorithm is shooting some ray out that mimics how a photon is shot out, then tracing it along some path and seeing how it interacts with the world. To that end, I've found several forms of ray tracing that exist:
Ray Casting: This is the most basic version of ray tracing, where the first thing the ray intersects is what the final output is based on. One could argue this is the basic step of ray tracing in and of itself.
Ray Marching: The most common implementation of this is the ray is the path generated by spheres that originate at some point. At the first point, a sphere grows until it hits something, then the the next point of the ray is at the edge of the sphere in the ray's direction. Then another sphere is generated that grows until it hits something, creates a new point at the edge in the direction of the ray, and so on. An object is considered "hit" when the sphere is small enough.
(Taken from http://jamie-wong.com/2016/07/15/ray-marching-signed-distance-functions/)
Path Tracing: When someone usually talks about ray tracing without any other context, this is the algorithm they're usually referring to. Path tracing attempts to trace the path of the ray from the camera to a light source. On top of this, each sample point use a ray that's pointed in a random direction. The idea is the more samples you use, the closer you get to the actual image.
Some industry folks may consider "ray tracing" itself to be the original algorithm devised by J. Turner Whitted while "path tracing" is the algorithm described by Jim Kajiya.
Ray tracing is also solving a problem with rasterizing
What rasterized rendering does today is it dumps a ton of information about the scene before proceeding to work on it. One of the first thing it dumps is all of the geometry the camera view cannot see. Next, pieces of the scene are built up one by one. They either add on top of each other right away like in a forward renderer or the parts of it are assembled on the side to be combined later like in a deferred renderer. (https://gamedevelopment.tutsplus.com/articles/forward-rendering-vs-deferred-rendering--gamedev-12342)
One issue with traditional rendering is also the order in which things are rendered. This can lead to weird artifacts like light spilling onto areas where there's no obvious light source, like in these example:
By using ray tracing, the rays bring back information of what's visible, what isn't visible, and how light can indirectly affect other objects in a realistic manner.
Real-time ray tracing isn't a relatively new thing for games
The funny thing is, ray tracing has been used for some time. Some games, like Guerilla Games' Killzone Shadowfall uses ray tracing to do screen-space lighting (slide 84), mostly in reflections and what appears to be ambient occlusion.
A Brief Overview of my Insights on the Microbiome.
It is becoming more and more apparent in this day and age where we are starting to see more revelations regarding the impact of one's microfauna on things, such as from the digestive system, to the nerve system. I would like to make it clear that there is indeed quite a large relationship between the bacteria, and other microorganisms that live on us, and bodily processes. This however is most prominently due to evolution.
In nature we understand that two species can live in symbiosis with one another to varying degrees. There are often symbioses seen on Norweigan Lobsters that are implicated in a healthy oral cavity for that individual, while the symbiotic gets a lovely, easy meal out of it. Our microfauna is a little bit like that. We have evolved through diets over the ages, and prominently the bacteria in our gut have assisted this process. In essence we cannot have a full diet without these bacteria, and those bacteria may be quite niche to our gut.
This points to a large dependence on the bacteria, not for their presence, but rather the processes these bacteria will endure in our gut, for instance in the digestion of certain grains, the bacteria will digest the grains, and we are able to assimilate the products of that digestion.
Before we start going all over the place with how important this symbiosis is, it is further more important to find the underlying processes. We are not depending on our microbiome, nor is our microbiome dependent on us - scientists are often tooting their own horn about this subject at this time. The recent faecal transplant method is indeed a treatment for someone with an "unbalanced" microbiome that will ensure the problem is remedied. A rather disgusting solution no matter how you put it, indeed one of the many things that separates us from Rabbits, is that we do not eat our own feaces, lest someone else's. A more appropriate response is to culture both a healthy gut microbiome and a seemingly damaged gut microbiome, and see which are the process that are needed. For instance if someone has trouble digesting lactose due to their microbiome, do we give them a faecal transplant or simply introduce the appropriate bacteria - or indeed simply introduce lactase into their system.
This is part of the reason why I have a problem with all these microbiome studies. No one person's microbiome is the same, however we can all have healthy or bad microbiomes. Scientists treat the microbiome essentially like it is part of you, that is not true.