我正在使用自己的引擎,正在努力寻找能够在动态场景下实时进行正常反射的任何技术。
到目前为止,我发现在动态场景下可以实时进行实时工作的唯一技术是SSR。但是它确实很沉重,并且有很大的偏差。

拥有多个多维数据集贴图并实时更新它们的想法让我大吃一惊,但这是因为重新栅格化场景也意味着每个多维数据集都更新实时是我无法做到的阴影投射。

所以我的问题是:除了反射探针(立方体贴图)或屏幕空间反射之外,还有其他技术吗?

使用引擎的游戏的艺术风格基于许多“几乎是镜面”的反射,而不是PBR。

[编辑]
要更精确些我正在搜索:


我不需要一个以上的弹跳。
我不希望任何在“加载时间”无法完成的烘烤。
我更喜欢该技术是否适用于每个像素正常,但如果您
知道一种适用于每个顶点正常的技术,我也会开放。
我愿意接受仅在特定情况下可用的技术(例如tiny
场景,延迟只要满足其他
要求。
如果您的技术是全局照明技术的一项功能,我也可以公开
,但我希望它能正常工作
如果它可以轻松地支持GGX,那就更好了,但不是必需的。
只要
artist




可以预测,不准确性就不是问题。 />

#1 楼

如果只有单个平面镜面,则解决方案是将场景渲染两次,通常一次。然后,使用模具标记可看见镜子的区域。

然后仅绘制到该区域中,您才再次渲染场景,但将其围绕镜子平面镜像,并剔除镜子另一侧的任何几何图形。镜子。

评论


$ \ begingroup $
我会记住这一点,但是我在谈论广义方法
$ \ endgroup $
–新闻
17 Mar 20 '17在12:36

$ \ begingroup $
@newin当您说广义时,您是指非平坦表面还是多个平坦表面?您是否需要反射变形?镜子在其他镜子中多次反射?这将有助于编辑问题以指定您需要做什么和不需要什么,然后答案可以将其考虑在内并集中于必要的内容。
$ \ endgroup $
–trichoplax
17 Mar 20 '17在20:49

$ \ begingroup $
@trichoplax我以更高的精度编辑了问题,我希望这足够了。
$ \ endgroup $
–新闻
17 Mar 20 '17在22:13

#2 楼

如果您需要一种实时解决方案(无需烘烤),并且只需要反射一次反射,则可以尝试每帧生成(或更新)场景的立方体贴图,如本GTA5图形研究所述。

此解决方案应在一般情况下起作用(请确保处理立方体贴图探针将在场景对象中的情况)。

如果每帧渲染立方体的六个面似乎太沉重,则可以尝试例如一次仅更新一个面。然后,您可以在更新面部时使用某种平均功能,以使每帧之间的更改看起来更平滑。

这只是一个想法,还有很多其他的解决方案,人们可​​以想到。