I devoted several years to this, and there are a bunch of reasons why that ends up being the case. The main issue is, think of how many atoms there are. Now realize the actual number of atoms is for all intents and purposes infinitely larger than whatever you thought of.
Ok, so we try to approximate. Right away you run into problems. What we call "light" is just a set of photons entering our eyes. Each photon has a wavelength. Our eyes do a compression algorithm in our retina -- our brains do not receive a "count" of the number of photons entering our eye. Instead, our retina cells themselves are responsible for coming up with an average of all the photons hitting it, and sending a signal to our brain: that's color.
Anyone who has any graphics experience whatsoever will know that it's an extremely common operation to calculate lighting by multiplying a light's color with an RGB texture. (The leaf's texture, say.) Now, tell me: What does it mean to "multiply" two colors together?
Nothing! It's fake! It has no basis in reality whatsoever. It literally is an astonishing approximation that happens to work reasonably well.
But our brains know the difference, inchoately, when you look at a real video vs a computer-generated video. You can tell that there's something almost indescribably "off" about the CG video. And I suspect it's because the final product consists of a series of approximations that work well in isolation but are not quite perfect when it comes to simulating reality.
Combine that with a lack of detail in CG video due to the fact that there are a gazillion atoms in real life and only a few million triangles in CG life, and you will always end up with experiences that are very distinctly computer generated.
Defeatist! Call me names! Say we can do better! Say that the latest advances in graphics and raw computing horsepower will solve these concerns. Maybe they will. But most importantly, I dare you to get so frustrated with our lack of ability to generate truly realistic computer video that you take on the problem yourself, and dive into the field with your whole heart. Surpass me. Surpass what everyone thinks is possible. Question the fundamental assumptions that the entire field is based on: that `N dot L x diffuse` is even slightly reasonable. Create your own "diffuse" textures that stores counts of photons bucketed by wavelength, measured from a real-life data source, instead of RGB colors. Try fifty things that everyone dismisses as unpromising, because whatever the final solution looks like, it's going to be unlike anything we're doing right now.
Cracking the problem of realistic video isn't going to happen with incremental improvements of our current techniques. Remember this rule of thumb: A video that's indistinguishable from real life will appear equally real to both humans and animals. A cat, for example, would think your video is real, if it's viewing your video on a monitor calibrated to cat eyes instead of human eyes.
It's more productive not to take the field too seriously, and to fall in love with the endless puzzles and challenges that graphics programming affords. Once you accept that the game is to generate something that looks cool, not that looks real, everything falls into place.
There are many path tracing examples from siggraph, on youtube and showing up on images.google.com searches for path tracing.
In other words, it's unfair to say that a given graphics technique looks real because it generates photorealistic still-frames. Our target is videorealism, not photorealism. I fell into this trap myself: it's so tempting to start with still frames and think that results are encouraging just because they look good. But string those still-frames together into a video and it'll be obvious why it's artificial, assuming it's a rendering of a fairly complex scene, which is equally important. But then you get into questions of whether the art assets were carefully prepared to match the properties of a real-life object, etc, which is why everybody starts with cubes and spheres, which also happen to be objects that you never see in real life. (When's the last time you were in a room composed of perfect cubes and spheres?)
That's a moot point though, as we do want to make 3D realistic photos too, not just videos.
Is it? I was under the impression that I-Frames in current video compression formats are encoded rather similarily to current still image formats. (JPG's comparable lack of sophistication notwithstanding, but c'mon, it's old. :) )
It's fair to say that a solution that can't be parallelized might not be deployed to real-time simulations like video games for quite a long time, but Hollywood will definitely use it.
https://www.cs.dartmouth.edu/~wjarosz/publications/christens... is a nice summary from October 2016.
> The last ten years have seen a dramatic shift in this balance, and path tracing techniques are now widely used. This shift was partially fueled by steadily increasing computational power and memory, but also by significant improvements in sampling, rendering, and denoising techniques. In this survey, we provide an overview of path tracing and highlight important milestones in its development that have led to it becoming the preferred movie rendering technique today.
So when you get wowed by the next new film's stunning level of realism, you can reflect on how soon path finding might find its way into high-end gaming rigs too ;)
I am still waiting for the day I can run this in WebGL.
My laptop has a 2GB NVidia Quadro K1100, that is barely used in such demo pages.
The point is about graphic programming algorithms that we still cannot explore in WebGL, because its model is a DX9 level graphics card.
Ray tracing was just one possible example, there are other ones I can refer to.
No, that is not the point of the thread. See my reply.
The path tracing approaches in modern raytracers are actually very similar as computation to Feynman's path integral formulation of quantum electrodynamics (QED). The big difference is that in the "classical" approach one integrates real values (radiance) and in the QED one integrates complex values (amplitudes) whose magnitude describe the probability of a given wavelength hitting the camera sensor.
I was pitching this idea as a research direction in a recent slide deck https://github.com/skaslev/fract/blob/master/mc-production.p...
It's not that simple. By definition, the closer that your engine looks to real life, the less flexibility artists have. If a scene looks perfectly real, artists would not be allowed to change anything at all, because any change would make the scene look less real.
Therefore, no matter what kind of clever mathematics you use, or any algorithm you come up with, your flexible art pipeline will torpedo your ambitions of creating a CG video indistinguishable from real life.
This is a fundamental limitation that I don't think has been fully appreciated, or at least isn't emphasized in literature. I think most people can't really believe or accept that no one, anywhere, has ever successfully created a CG video of a complex scene that is capable of fooling all human observers 100% of the time. (If a set of human observers are asked "Is this video real, or computer-generated?" then their responses should be no better than random chance.)
Your research looks promising! It would be interesting to pair an analytic solution with some hypothetical art assets that were somehow generated from reality, or otherwise fully capture all of the variables in a real-life object (i.e. the textures are more than simply RGB values).
The original film had a very renowned detailed model 15m long and weighing 10 tons. It was quipped that it would have been cheaper to lower the Atlantic.
Now imagine in your remake you choose to raise a virtual photo-realistic Titanic. Your artists and critics are not going to complain that it is too realistic.
Realistic rendering is strived for even when the scene being rendered is conjured up by artists.
That means if you're interested in creating a truly realistic CG video, you have no hope of succeeding if you use an art pipeline. If it's true that a truly realistic CG video will only be created by data that matches real life, then artists must not be allowed to conjure up the data that you use. The data has to come from real-life sources.
There is a contradiction here, and I think it's worth accepting and embracing it. Once you accept that true realism isn't the goal, then you can focus on making CG look cool.
[0] https://en.wikipedia.org/wiki/Physically_based_rendering [1] https://www.chaosgroup.com/vrscans
Multiplication is a simplification but it does have basis in reality (amount of light that bounces versus amount absorbed or converted to an invisible wave length). What is fake is the perception of colors other than the three wave length intervals we see.
Another approximation is assuming all surfaces, at the microscopic level, are flat or uniformly rough. Microscopic features that change how colors are reflected are not simulated.
Currently, the main road block with believable simulation is physical interaction between objects. There is just too much to simulate, even with the (incorrect) assumption that most objects are 100% rigid. Also the movement of organic things, esp. humans.
The count of photons (of the same wave length) though helps the eye and sensors to better match colors. In other words, low light scenes have less color information.
The amount of color — the relative fractions of light of different wavelengths — is the same. Low light scenes look less colorful to us humans because our more sensitive photo receptors, rods, do not detect color. Only cones do, and those don't work as well in low light.
If you ever do any low light photography, you'll be surprised to discover how richly saturated the night is. Our eyes just can't detect it.
I'm talking from the point of the reception. Sensors can't detect it as good, so you get color noise and inaccuracies in low light scenes.