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

时间: 2024-10-12 15:36:32

unity, 内存profile,ImageEffects Temp和Unity GI SystemTex RGBM的相关文章

Unity内存理解(转)

Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大. Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时 动态加载,可以指定路径和来源的. 其实场景里所有静态的对象也有这么一个加载过程,只是Unity3D后台替你自动完成了. 详细说一下细节概念:AssetBundle运行时加载:来自文件就用CreateFromFile(注意这种

unity内存加载和释放

Unity几种动态加载Prefab方式的差异: 其实存在3种加载prefab的方式: 一是静态引用,建一个public的变量,在Inspector里把prefab拉上去,用的时候instantiate 二是Resource.Load,Load以后instantiate 三是AssetBundle.Load,Load以后instantiate 三种方式有细节差异,前两种方式,引用对象texture是在instantiate时加载,而assetBundle.Load会把perfab 的全部asset

Unity优化之GC——合理优化Unity的GC

最近有点繁忙,白天干活晚上抽空写点翻译,还要运动,所以翻译工作进行的有点缓慢 =.= 本文续接前面的unity的渲染优化,进一步翻译Unity中的GC优化,英文链接在下:英文地址 介绍: 在游戏运行的时候,数据主要存储在内存中,当游戏的数据不在需要的时候,存储当前数据的内存就可以被回收再次使用.内存垃圾是指当前废弃数据所占用的内存,垃圾回收(GC)是指将废弃的内存重新回收再次使用的过程. Unity中将垃圾回收当作内存管理的一部分,如果游戏中垃圾回收十分复杂,则游戏的性能会受到极大影响,此时垃圾

Unity优化之GC--合理优化unity的gc

介绍: 在游戏运行的时候,数据主要存储在内存中,当游戏的数据不在需要的时候,存储当前数据的内存就可以被回收再次使用.内存垃圾是指当前废弃数据所占用的内存,垃圾回收(GC)是指将废弃的内存重新回收再次使用的过程. Unity中将垃圾回收当作内存管理的一部分,如果游戏中垃圾回收十分复杂,则游戏的性能会受到极大影响,此时垃圾回收会成为游戏性能的一大障碍点. 本文我们主要学习垃圾回收的机制,垃圾回收如何被触发以及如何提高垃圾回收效率来减小其对游戏行性能的影响. Unity内存管理机制简介 要想了解垃圾回

Unity优化之GC——合理优化Unity的GC (难度3 推荐5)

原文链接:http://www.cnblogs.com/zblade/p/6445578.html 最近有点繁忙,白天干活晚上抽空写点翻译,还要运动,所以翻译工作进行的有点缓慢 =.= 本文续接前面的unity的渲染优化,进一步翻译Unity中的GC优化,英文链接在下:英文地址 介绍: 在游戏运行的时候,数据主要存储在内存中,当游戏的数据不在需要的时候,存储当前数据的内存就可以被回收再次使用.内存垃圾是指当前废弃数据所占用的内存,垃圾回收(GC)是指将废弃的内存重新回收再次使用的过程. Unit

Unity for Windows: III–Publishing your unity game to Windows Phone Store

原地址:http://digitalerr0r.wordpress.com/2013/08/27/unity-for-windows-iiipublishing-to-windows-phone-store/ In Part II we covered how you can publish your game to Windows Store, so it runs on Windows 8 driven devices. Today we are going to export our ga

Unity内存优化

对项目优化有很多,如:mesh合并,减少DrawCall和模型骨骼以及物理计算,合并材质球,优化代码等等. 优化: 1. 更新不透明贴图的压缩格式为ETC 4bit,因为android市场的手机中的GPU有多种,每家的GPU支持不同的压缩格式,但他们都兼容ETC格式. 2.对于透明贴图,我们只能选择RGBA 16bit 或者RGBA 32bit. 3.减少FPS 在ProjectSetting-> Quality中的VSync Count 参数会影响你的FPS,EveryVBlank相当于FPS

Unity内存优化技术测试案例

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 Unity引擎优化技术,无非涉及到三点:CPU优化,GPU优化,内存优化. 先谈谈内存优化:大概可以分成三大部分: 1. Unity3D内部的内存 2. Mono的托管内存 3. 引入的DLL或者第

unity内存管理

最近一直在研究unity的内存加载,因为它是游戏运行的重中之重,如果不深入理解和合理运用,很可能导致项目因内存太大而崩溃. 详细说一下细节概念:AssetBundle运行时加载:来自文件就用CreateFromFile(注意这种方法只能用于standalone程序)这是最快的加载方法也可以来自Memory,用CreateFromMemory(byte[]),这个byte[]可以来自文件读取的缓冲,www的下载或者其他可能的方式.其实WWW的assetBundle就是内部数据读取完后自动创建了一个