CommandBuffer复制BuiltinRenderTextureType CameraTarget为空的问题
发布时间
阅读量:
阅读量
在Forward模式中,当尝试通过CommandBuffer执行后处理操作时,发现cb.Blit(BuiltinRenderTextureType.CameraTarget,...)这一调用方式失效。通过FrameDebug工具观察到,此时传入的_MainTex参数显示为White(而在Deferred模式下该操作是有效的)。
造成这一现象的原因如下:
在Forward模式中,默认情况下相机渲染至BackBuffer,而在渲染过程中无法直接读取BackBuffer的内容(Deferred模式下由于存在GBuffer,因此不存在此问题)。解决方法有两种:一种是手动进行Grab操作(通过调用cb.Blit并指定对应的材质实现,但会带来额外的性能开销);另一种是启用相机的forceIntoRenderTexture选项(注:该功能仅在Unity 5.6版本及以上才有效。如果已开启HDR功能或使用了OnRenderImage方法,则无需开启此选项)。
类似问题描述如下:
由此可见,当使用OnRenderImage方法、开启HDR渲染功能或启用任何需要相机渲染至中间缓冲区的功能时,Unity会自动将相机输出至中间缓冲区而非直接写入BackBuffer(屏幕)。这种行为是有益的。
然而,在Unity无法预判相机是否需要中间缓冲区的情况下,若CommandBuffe
全部评论 (0)
还没有任何评论哟~
