不幸的是,这是一个相当大的问题,并且有很多方法可以进行实时反射。Mental Ray 计算反射的方式与您使用 WebGL(甚至 OpenGL)实时计算反射的方式完全不同。
最简单的方法是渲染场景两次,第一次是您将场景倒置(沿反射面的平面镜像)。这(就反射而言)非常简单,但确实将您限制在单个反射平面上。给定您的图像,并且唯一的反射表面看起来像地板。那可能是最好的选择。
您甚至可以将镜像场景渲染为纹理,以便稍后在管道中对其进行操作(例如,如果您希望图像像透过水一样变形)。或者围绕不同的平面进行多次反射。渲染成本当然会急剧增加。
您可以使用原始帖子中提到的预渲染立方体贴图。尽管对于这个场景,您可能需要不止一个。通过在场景中放置点来表示每个立方体贴图应该被捕获的位置。通常,这些将是低质量的,相对而言,以保持较低的内存使用率。
第三种选择是屏幕空间反射映射(可以找到合理的介绍http://roar11.com/2015/07/screen-space-glossy-reflections/),它确实有效,但也有一些问题(边缘显示)来解决。您通常会在完整的游戏引擎中找到所有这些内容(例如,虚幻引擎,https: //docs.unrealengine.com/latest/INT/Resources/Showcases/Reflections/ )。