The Issue Imagine a scene in a video game with 15,000 perfectly reflective objects. Let's, say all these objects are moving relative to each other (we'll assume no overhead for movement since that is outside the scope of this blog). There are two main approaches to rendering these reflections. Firstly, one might think to use ray-tracing . It is as simple as clicking a button in most rendering engines that support it, but in those that do not, adding support for ray-tracing is a quite daunting and complex task. Additionally, even at it's most efficient, ray-tracing is still extremely demanding. This is why we needed decades of optimization and tailor made hardware for it to be commercially viable. If you are looking to support a platform without ray-tracing capabilities, you can either use screen-space reflections , which can only reflect objects that are on the screen, or you can use environment mapping. Foundations ...