• 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存在它们就存在。目前只知道这些。

  • 相关阅读:
    图片热点 网页划区 网页的拼接 表单
    html body的属性 格式控制标签 内容容器标签 超链接标签 图片标签 表格
    结构体
    out 传值
    c#数组,手机号随机数抽奖
    输入月份和日期,输出是今年的第多少天,利用switch和case
    c#,for穷举,百鸡百钱
    c#条件运算符的使用,判断时间是上午还是下午
    c#关于try catch finally的使用,判断日期格式是否正确
    c#数组,例题
  • 原文地址:https://www.cnblogs.com/wantnon/p/4891847.html
Copyright © 2020-2023  润新知