怜我世人,忧患实多。
摄影组
原帖由 @mjnaur 于 2019-1-16 10:18 发表 如果没记错的话,光栅化下镜子的实现是这样的: 1. 通过摄像机位置、观察方向、镜子位置及其法线,计算出以镜子为surface、从镜子后面看向游戏场景的view matrix。 2. 然后通过该view matrix和场景中的三角形们,过一遍光栅化pipeline,把东西画在一个额外创建的framebuffer上。 3. 拿这个framebuffer当纹理,贴在镜子上,然后再真正的摄像机位置上再过一遍光栅化pipeline,画出最终的效果。 也就是说,光栅化方法实现镜子的话,场景中能看到多少镜子,就需要走N+1遍pipeline,另外为了保存镜子反射内容,需要保存N个额外framebuffer在显存中。 一般我们只会用这种方法来实现全反射(镜子)。而如果碰到漫反射这种对画面最终效果影响不明显的,则会用一些更加投机取巧的方法,比如屏幕空间反射(能够动态显示场景中的变化内容,但是范围有限(仅仅屏幕上会画出来的东西),而且会延迟至少一帧),或者就反射一下cubemap完事(静态的,无法显示场景中变化的内容)。一般这种方法都会造成失真。 如果是光线追踪方法的话,只需要过一遍光追pipeline,并且不需要额外的内存来保存这些framebuffer,所有反射内容都是即时的、整个场景中存在的所有的东西。
查看详细资料
TOP
魔头
原帖由 zo 于 2019-1-18 08:45 发表 posted by wap, platform: iPhone 放一个镜像的角色模型在镜子对面不更省事嘛……
混世魔头