- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 unity三种光源解决方案
一。unity三种解决方案1.Subtractive模式 动态物体 主光实时,环境光diffuse项LightProbe提供,高光项由reflectionProbe提供。阴影通过shadowMap提供。(静态物体产生在动态物体的阴影由lightprobe提供) 。静态物体没有高光,环境光diffuse项由lightmap提供。高光项由reflectionProbe提供。主要问题 均对于同一个材质的...
2018-04-11 17:44:36
2240
原创 Unity gamma校正
项目用了PBR做次时代,所以要求光照计算必须在线性空间下计算。所以就学习了下gamma linear空间以及unity相关。1.开发流程 也就是对于abedo等类似需要美术通过DCC工具产生的。由于美术都是通过显示器来输出,存储空间都在srgb空间下,所以在进行光照处理之前需要power2.2转到linear空间下,在进行光照处理。处理完以后,在进行power1/2.2输出到fbo下。然后显...
2018-03-21 15:34:31
1387
原创 Unity 自定义深度RT
项目里做水 或者 景深等其他一些效果经常要用到depth buffer。但是unity不许直接访问depthbuffer.(PS 同时读写depthbuffer会造成硬件打断,对性能也不友好)。所以,如果想用depth,有三个解决方案1.也是unity提供的开启一个depth pass,应该也会用来当做early-z的优化吧(雾。(有个问题 就是unity把 depth pass和shadow c...
2018-03-01 14:46:12
4136
原创 透明物体排序
一。透明物体在渲染中一直是一个头疼的存在,除了会增加overdraw引起性能问题外,还经常导致各种渲染错误。所以很多效果都是不支持透明的。但有的时候,美术经常要这种效果。在这里总结下几种常用的解决透明物体渲染错误的办法。1.基本方法:透明物体都是按照深度进行排序的,所以如果如果是2个物体始终能确定排序顺序,直接调整深度值或者调整renderqueue就可以了。2.当一个透明物体出现
2017-04-09 18:29:44
4087
原创 Unity ScreenSpaceShadowMask Blur
一。目的Unity自带的阴影功能 shadowmap占用内存过大。1024 * 1024占用8M。而我们项目内存吃紧。所以只能选用512 *512.而效果就差很多。有明显锯齿。所以需要采用 screen space shadow blur。就是在屏幕空间里对已经投射完阴影的物体进行高斯模糊来增加阴影质量,减少锯齿感。(PS unity提供的软阴影应该是PCF。但是效果并不明显)。
2016-08-29 18:28:07
1660
原创 Unity PVRTC4 相关
在ios上纹理格式大家一般都用 pvrtc4 rgba格式。但是前段时间我们发现质量下降的厉害。后来发现是unity5换了pvrtool。换成unity4的就可以了。工具路径:Editor/Data/Tools/PVRTextTool如果还想提高质量可以参考这两篇文章1. http://blog.heyworks.com/making-the-quality-of-pvrtc-text
2016-06-05 18:37:15
3730
原创 Unity动画播放方式区别
1.Tween动画 简单曲线 简单UI动画制作方式 好处:几乎没有初始化时间。性能损耗低。 坏处:无法完成复杂动画、 2.animation 只是单纯的曲线变化。unity4.x主要是通过他进行播放animationclip. 好处:初始化时间短,冗余数据少。 坏处:没有状态机,单线程处理。3.animator 是动画播放的集合,是一套体系播放动画。
2016-06-05 18:34:05
794
原创 Unity mesh texture开启 read 会增加内存畅想
大家都知道,unity如果对 texture或者mesh开启了 read/write enable会增加一份拷贝在内存里。今天跟朋友讨论为何会增加,以及如何避免来着。大家都没看过unity的源码。所以都是猜测,欢迎一起讨论。正常流程 如果没有开启,unity从文件读取到内存后,会提交给显卡,存到显存里,然后就会释放这块内存了。同时,由于手机内存跟显存是一个,只是映射不同的地址。所以内存
2016-05-14 19:23:59
4043
原创 Unity memory profile面板参数解析
unity profile 内存面板 分为俩大类 一个是used 一个是reserved. used是当前正在使用的,reserved是unity申请的,有缓存。 主要分析 reserved1. reserved total = unity + gfxDriver + Mono + fmod + profile. 是总内存。但是不等于 android的PSS 或者 IOS xcode上
2016-05-14 19:14:59
4823
原创 Unity后期处理-抗锯齿
一。产生原因 顶点插值可以产生任意位置的顶点。但是像素不是,像素着色器如何着色是通过他的中心点是否被三角形覆盖决定的。所以会产生突变,在外围看来就是锯齿。 二 解决方案1. MSAA首先执行中心点的着色,然后把颜色复制给被三角形覆盖的采样点。最后加起来取平均来达到过渡,实现抗锯齿。 unity里通过 QualitySetting里设置采样点
2016-04-07 17:12:05
11136
原创 Unity渲染路径比较
1 前向渲染 最常用的渲染路径。首先基础场景渲染非透明物体,然后每个光源需要一个pass。同时,也会有很多像素进行了FS后,被后面的测试抛弃。造成浪费。所以如果一个场景时多光源,性能会有严重的损失。unity的前向渲染目前只许一盏 像素光源。好处: 不需要特性,材质很灵活坏处: 有很多被抛弃掉的像素也会执行FS,多光源的情况性能下降的厉害。他的扩展有 Z-Pass 第
2016-04-05 17:32:32
1648
原创 unity GPU优化
一。标准 1. DrawCall 控制在 200以下 2. 同屏面数控制在4W面以下二。评判瓶颈 1. Unity Profile 出现 waitforPresent 2. IOS的 FrameDebugger 可以看到CPU跟GPU分别耗时 同时也能看到某步的具体耗时 3. Adreno 也可给出每次pass消耗的clock数以及传输数量数
2016-03-31 16:35:16
2804
原创 Unity CPU 优化
一 标准渲染 15ms 左右脚本 10ms 左右其他(主要是物理,动画) 8ms 左右二 评判瓶颈查看主要通过unity的profile工具。如果瓶颈在GPU上,profile上会有 waitforpresent 占比 或者通过 Adreno屏蔽掉openGl 来查看帧率是否有提升。然后在看占比最高的一项是什么引起的。进行相对应的优化。三 常
2016-03-17 17:36:18
671
原创 NGUI相关注意事项
1. 贴图为正方形。2. 图集分为 common图集 大小在 1024 * 1024 战斗图集 一个大逻辑一张图集 保证打开一个UI时 图集数在3个以下。3. UI上绑定的特效,模型等不要放入prefab中。在代码中异步加载,防止UI响应过慢。4. UI上深度规划好。每一个材质一段深度,最好不要出现drawcall深度插断的情况。5. NGUI的重建mesh代码需要优化。思想是
2016-03-10 17:08:14
733
原创 Unity内存优化
一 大概标准1. 纹理 25M2. Mono 30M3. Animation 20M4. Mesh 10M6. Font 10M7. Audio 5M8. GfxDriver 25M9. ResourceManager 视情况而定(跟 你ResourceMan
2016-03-05 21:52:59
790
原创 Unity 资源管理
一 加载Unity资源加载 主要分成2种方式 一种是 Resource.Load 还有一种是 外围读取 一般是 AB方式。产生对象顺序1.AssetBundle对象 通过 CreateWithFile WWW等操作产生。同时也会产生 WWW对象或者 serialize对象.2.Asset对象 通过 AssetBundle.Load 产生。3.GameObject 通
2016-03-04 09:26:06
590
原创 Unity感悟系列之目录结构
1. Resource目录 通过Resources.Load读取,Resources.Unload卸载。 在里面的资源会经过unity的资源管线处理。可以写Post自定义处理。被unity合并文件。无法通过普通file进行读取。里面放置prefrab且为动态加载。不放任何资源文件。通过链接进行打包资源。2. SteamAssets目录 通过WWW读取 在android里会以zip格式存
2016-02-22 21:44:49
2252
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人