zoukankan      html  css  js  c++  java
  • unity, 内存profile,ImageEffects Temp和Unity GI SystemTex RGBM

    最近用unity的Profiler对公司项目进行内存profile,发现一些问题,记录一下。

    用Memory Area的Detailed View,用法见:http://docs.unity3d.com/Manual/ProfilerMemory.html

    一,

    可以看到Not Saved->RenderTexture下有两个ImageEffects Temp。想不出它们是因何而来。

    注:在profile过程中直接点Take Sample才容易看到ImageEffects Temp,如果先点曲线区域使项目暂停运行了再Take Sample,有时候会看不到ImageEffects Temp。

    于是开始用屏蔽法排查,发现当场景中某个节点关掉之后ImageEffects Temp就不再出现了,再检查此节点,发现上面挂了个脚本。对脚本中的函数逐个进行屏蔽,发现当其中一个函数屏蔽之后ImageEffects Temp就不再出现了。这个函数是一个空函数:

    void OnRenderImage(RenderTexture src,RenderTexture dest){}

    一般这个函数里都会调用个Graphics.Blit(src, dest, mat)之类的,但是可能写程序的人临时改了思路把其中的语句删了,但是没删函数,这样不仅导致这个回调每帧都被调用,而且还为了参数创建了renderTexture!!!

    不知道开启某些优化选项后这个会不会被优化掉,但出于稳妥考虑,这种空函数还是清理干净为好。

    二,

    在Not Saved->Texxture2D下面有

    Unity GI SystemTex RGBM
    Unity GI SystemTex RGBM
    Unity GI SystemTex Directionality

    这几个项目,看起来跟GI有关,想看看究竟是怎么来的,是不是必须的。

    在Windows->Lighting下面把Precomputed Realtime GI和Baked GI都关了,然后再profile还是有这三项。

    后来新建了个工程做实验,发现在不烘焙lightmap之前profile,是没有这三项的,但一旦烘焙了lightmap再profile,这三项就出来了,虽然查看这三项中的图像与lightmap中的图像并不相同,但是似乎只要lightmap存在它们就存在。目前只知道这些。

  • 相关阅读:
    git和github入门指南(3.1)
    git和github入门指南(2.2)
    git和github入门指南(2.1)
    git和github入门指南(1)
    webpack入门进阶(3)
    webpack入门进阶(2)
    webpack入门进阶(1)
    vue全家桶(4.3)
    vue全家桶(4.2)
    vue全家桶(4.1)
  • 原文地址:https://www.cnblogs.com/wantnon/p/4891847.html
Copyright © 2011-2022 走看看