我将介绍一下能通用的后处理性能优化方案。 OnRenderImage 的性能问题 在我们看到的后处理教程,或者后处理插件中,通常的处理方式是,在OnRenderImage方法中,处理后处理。 在我刚开始整合后处理的过程中,发现,即使不做任何后处理,仅仅一句Graphics.Blit(source, destination),也会导致严重的掉帧,这看起来是不符合逻辑的。
多帧采样抗锯齿(MFAA):MSAA优化版 快速近似抗锯齿(FXAA) - 后处理(运行于目标游戏渲染管线的后期处理阶段) 单程像素着色器 性能好(消耗最低) 容易糊 子像素增强抗锯齿(SMAA) - 后处理 类似FXAA的滤镜类抗锯齿 性能好:2倍FXAA消耗 (相对FXAA来说)不容易糊 时间性抗锯齿(TXAA) 将MSAA、时间滤波以及后期处理相...
然后考虑工程中使用的后处理效果,这里用到了色调映射、颜色调整、晕影、泛光这几个效果。 Volume Profile面板 从优化角度来看色调映射几乎不存在优化空间,而颜色调整(也就是LUT)之前已经由于iOS对float数有更高效的支持改回了HDR模式,不过在sRGB与线性空间转换时可以选择速度较快但精度较低的近似函数选项,如图勾选。
整合所有后处理效果至同一个 OnRenderImage 或使用预渲染方法能带来性能提升。尽管不如预渲染方案明显,但性能优化是渐进积累的过程。在使用 Unity 提供的后处理方案时,我们已经将所有功能整合至同一个 OnRenderImage 和 shader 中,通过材质的 EnableKeyword 功能开关对应功能,这在代码层面具有简洁性和易扩展...
根据UI界面的使用频率,分层处理UI界面 粒子保持在400以下 3 内存优化 3.1 三块内存 C#程序编码内存 脚本 Unity编码内存 GameObject中的Mesh和Material 托管堆与非托管堆 类似C/C++ 中申请内存的malloc/new 和释放内存free/delete 安全代码堆:托管堆 由C#进行计数管理 ...
【Unity】后处理效果的优化尝试 主要是在最近工作中的一些心得体会。 后处理效果的性能问题主要在: 1.屏幕每个像素都要进行计算。 2.可能会创建多张RenderTexture的空间占用。 3.多次Blit操作,比如高斯模糊多次迭代。 4.偶尔还需要新建摄像机渲染到RenderTexture。
但是,这样做,性能是有问题的,我们需要尽量将各种后处理效果,整合到同一个OnRenderImage(或pre post方法)中,这样能带来一些性能提升,虽然不如上面的pre post效果明显,但是优化是一点点积累的,也是值得做。 具体方法,Unity-Technologies/PostProcessing这个就比较有代表性,它将所有的效果,整合到同一个OnRenderImage,同一...
但是这样做性能是有问题的,我们需要尽量将各种后处理效果,整合到同一个OnRenderImage(或PrePost方法)中,这样能带来一些性能提升,虽然不如上面的PrePost效果明显,但是优化是一点点积累的,也是值得做。 具体方法,Unity-Technologies/PostProcessing这个就比较有代表性,它将所有的效果整合到同一个OnRenderImage和同一个Shader...
但是这样做性能是有问题的,我们需要尽量将各种后处理效果,整合到同一个OnRenderImage(或PrePost方法)中,这样能带来一些性能提升,虽然不如上面的PrePost效果明显,但是优化是一点点积累的,也是值得做。 具体方法,Unity-Technologies/PostProcessing(https://github.com/Unity-Technologies/PostProcessing/tree/v1)这个就比较...