Graphics Reference
In-Depth Information
There has been little development lately for producing accurate reflections, es-
pecially glossy reflections, in the real-time graphics industry at high performance
game frame-rate levels, meaning an algorithm has to run at a fraction of our per
frame millisecond budget.
Solving reflections in computer games has been a big challenge due to the
high performance requirements of the computations. We have a limited budget
of milliseconds to spare for each frame, 16.6 milliseconds for 60 FPS and 33.33
milliseconds for 30 FPS, to recalculate everything and present an image to the
user. This includes everything from game simulation, physics, graphics, AI to
Network, etc. If we don't keep the performance level at such small fractions of a
second, the user will not experience feedback in real time when giving input to the
game. Now imagine that a fraction of those milliseconds needs to go to reflections
only. Coming up with an algorithm that runs as fast as a few milliseconds and still
keeps the quality level at maximum is hard using rasterization-based techniques
that GPU hardware runs on.
Though game developers have been able to produce fake reflections for a
very long time on simple cases, there is no solution that fixes every issue up to
an acceptable level of realism with the performance levels required. For planar
surfaces, meaning walls and floors, it's easy to flip the camera and re-render the
entire scene and project the resulting image onto the planar surface to achieve
what we today call planar reflections. This works for planar surfaces such as floors
and walls but it's a completely different story for arbitrarily shaped surfaces that
can reflect toward any direction per pixel. Re-rendering the entire scene and
re-calculating all the lightings per plane is also an expensive operation and can
quickly become a bottleneck.
The only solution that gives perfect results existing today is what we call ray
tracing. But, tracing reflected rays and mathematically intersecting geometric
primitives (a bunch of small triangles that make up the 3D world) is computa-
tionally and also memory heavy both in terms of bandwidth and size, because
the rays could really go anywhere and we would need to keep the entire 3D scene
in memory in a traversable and fast-to-access data structure. Even today, with
the most optimized algorithms and data structures, ray tracing is still not fast
enough in terms of performance to be deployed on games.
4.3 Previous Work
Generating 100% accurate and ecient reflections is dicult if not impossible
with rasterization-based hardware used in GPUs today. Though we have moved
on toward more general computing architectures allowing us more freedom, it's
still not ecient enough to use a real ray tracer. For this reason game developers
have for a long time relied on planar reflections where you re-render the scene from
a mirrored camera for each plane, such as floors or walls, and project the image
Search WWH ::




Custom Search