上海 Unite 2019 总结
2019-05-20 12:00:00第一天
运用 Substance 打造 Unity 次世代材质纹理
介绍了
PBR
的基础概念,利用Substance
制作 PRB 贴图的流程,以及一些注意事项。
例如在sRGB
的Albedo
贴图中,最暗的不应该全黑(低于30-50),最亮的不应该全白(大于240)。
然后演示了一下Substance Designer
把一张真实照片转换成可以在引擎中使用的一套PBR
贴图的过程。Unity 科幻巨作《异教徒》影视级技术大起底
没有全程听。主要是看了
Unity
官方使用HDRP
做出来的影视级效果的一个Demo
。具体的实现细节也没有介绍。Unity Tiny Mode 概述
Unity
官方介绍了Tiny Mode
的Roadmap
。
了解到一些信息,比如当前版本的Tiny Mode
只能用TypeScript
编写脚本逻辑,未来会支持C#
。
Tiny Mode
依赖ECS
和Job System
,未来使用Tiny Mode
进行开发的话,会与现在的开发模式大大不同。
(会后看了一下B站Unity
官方介绍如何使用Tiny Mode
开发H5
游戏的教程,感觉Tiny Mode
算是寄居在Unity
内的一种完全不一样的开发方式吧,场景、GameObject
、Inspector
的使用都完全不一样。)
Tiny Mode
模块化设计,根据需要添加模块,包体更加可控。Core 52kb,Physics2d 37kb 等等。
Tiny Mode
的性能也是可伸缩的。Marvelous Designer 动画创作工作流在 Unity HDRP 的实现
Marvelous Designer
是一个服装设计软件,可以模拟真实的布料效果,并且应用到骨骼动画上。
原本以为是游戏中的布料效果实现,其实跟游戏没什么关系。二次元向高品质着色器解决方案:Unity-Chan Toon Shader 2.0 介绍
https://github.com/unity3d-jp/UnityChanToonShaderVer2_Project
介绍UTS2
在之前版本的基础上有哪些新的亮点(日式英语太难听懂了,有点没 follow 上)。
新版的UTS2
支持Point Light
,Spot Light
这类光源。《不可思议之梦蝶》从 PC 版移植到 Nintendo Switch 经验分享
独立游戏开发者介绍把
Unity
项目发布到Switch
平台的经验。
首先是接入Switch
平台要做的一些事情,比如I/O
需要接入Switch
的接口,需要注意https://github.com/unity3d-jp/UnityChanToonShaderVer2_Project
的几种不同使用方式等等。
还有一些注意事项,比如使用wwise
等一些第三方库的时候,需要通过邮件和任天堂获取许可;第三方插件的一些设置,比如wwise
的音频格式会导致发布到switch
之后运行崩溃。
然后是项目在开发中的一些提高效率的方法,使用Cache Server
减少加载时间,使用Git
分支来做多版本的切换。
最后是他们做的一些游戏优化,比如包体优化,把不需要生成mipmaps
的纹理的导入设置修改一下。加载优化,使用Switch
平台支持硬解的音频格式,减少解压时间。Unity 次世代地形工具介绍
比较失望的一场,大部分时间是在介绍新的工具怎么使用,比如增加了很多
Brush
。没有介绍具体的技术细节。《网络奇兵 3》运用 HDRP 统一光照模型解析
演讲逻辑很好,但是内容有点水。总结起来就是他们在用
HDRP
的过程中遇到了一个问题,是一个封闭场景,他们会需要替换地板的材质,一种是全黑的地板,一种是中等灰度的地板,一种是全白的地板。
然后这三种地板会让一个有同样光源的场景反射出不同的亮度(真实环境下也的确会这样),他们觉得最终效果暗的太暗,亮的太亮,想要解决这个问题。
然后就是讲他们解决问题的尝试。
第一种尝试是改光源的intensity
,太亮的场景减到 1/2,太暗的场景加到 2 倍,的确能让场景的亮度达到想要的效果,但是场景中如果有半透明体的物体的话,反射和折射出来的光会不一样。 Pass。
第二种尝试是加减光源,太亮的地方就减一个光源,太暗的就多放一个光源。其实和改光源的intensity
没差别,反而性能上去了。Pass。
第三种尝试是加后处理,他们用了Eye Adaptation
来控制曝光,能让原本欠曝的场景亮一点,过曝的场景暗一点,但是确点也很明显,就是如果暗的场景只占了一半,另一半是亮度正常的场景的话,正常的部分就会过曝,亮的场景同理,一些部分会欠曝。Pass。
最后是怎么解决的呢?反正我最后听到这有点无语。讲课的人说他们后来发现HDRP
有一个Debug
工具,可以检查场景里的材质贴图是不是有问题,打开这个工具,可以看到红色部分是贴图(颜色)太亮的,蓝色部分是贴图(颜色)太暗的,找到有问题的材质,改一下颜色或者贴图就好了。(其实就是第一场Substance
的人讲的,Albedo
贴图的颜色范围)Unity 影视级工具链指南
介绍了很多影视相关的工具,但也只是一句话带过,没有演示,没有细节。
第二天
《使命召唤手游》引擎技术升级与演化
去年开始使用
PBR
流程重做美术资源。PBR shader
分5级。
高端机用HDR RT
,低端机在Tonemapping
之前恢复信息。
地形包括植被用的Houdini
生成。
LightProbe
脚本生成。Lightmap
GPU 烘焙。
Texture Atlas
、Texture Streaming
减少内存和带宽使用Unity C# Job System 的功能使用
Unity 的技术支持工程师介绍他是怎么理解和使用
C# Job System
的。
他有简单提到一些技术细节,比如每个Job
执行的时候,会把需要使用的数据拷贝一份,Job
执行完成会再拷贝赋值回去,一些常用的引用类型,Unity
都写了一个对应的值类型来做访问,比如Transform
对应TrasformAccess
。需要用到NativeArray
,意味着会有unsafe
代码,会有指针操作,对逻辑程序员要求又高了。
个人觉得Job System
是在多线程操作上的一个包装,把一些繁琐的细节包装了起来,但实际上还是需要逻辑开发人员清楚的知道哪里会产生性能消耗,如何把逻辑解耦才可以提升性能。不然一味的套用Job System
可能不会带来太大的性能提升,反而增加了功耗。游戏架构和云服务的耦合前瞻 —— 匹配对战和连续大世界
大致介绍了一些在几种情景下的多人联机的优化。比如类似
Moba
的有匹配机制的实时竞技类游戏,可以通过分组的方式,保证每个玩家到服务器的延迟比较平均,而不是每个玩家找离他最近的服务器节点进行游戏。
另外可以使用动态节点的创建来减少服务器成本。前提是节点的启动时间控制在秒级。
对于大型的MMO
项目,如何利用动态平衡来实现无缝大世界。ARM 手游技术亮点荟萃:64 位运算,Vulkan 最佳实践,及 Arm Mobile Studio
相对来说比较有干货的一场。首先介绍了很多场景来说明升级到 64 位的必要性,比如 ARM 在硬件层做了安全检查,更有效的防止游戏被外挂修改。
然后是介绍了ARM
的一个开源的Vulkan
示范项目。和一些使用Vulkan
的注意事项。
比如推荐使用FIFO
而非Mailbox
的显示切换方式。使用Triple buffering
而非double buffering
。Pre-rotate
减少性能消耗。Load
和Store
的时候可以考虑使用DONT_CARE
的方式优化性能。Unity + Houdini 程序化工作流程
使用
Houdini
以及Houdini
的Unity
插件,做了一个关卡,先是在Unity
里面大概搭建一个场景,然后程式化生成地形和植被还有道路等等,最后美术调整和细化。跟传统的全部美术制作的方式比起来很高效,然后又可以做到程序化生成和人工制作相结合。Unity 的 Asset 管理和序列化
介绍了
Unity
在把一个资源放到Assets
目录下之后做了哪些事情,并且大致的讲解了一些文件的内容和意义。
一个优化点就是,把shader
中不需要的pass
删掉,否则即使不消耗性能,也会在运行时内存中产生很多ShaderLab
的Pass
对象。如何使用英特尔图形性能分析器提高游戏性能
讲的是在
PC
平台下怎么使用GPA
做性能分析。适用于开放世界的遮挡剔除流式加载
介绍了新的
OC
系统的新功能和优化点。
首先本质上Unity
的OC
系统还是使用的Umbra
的方案。可以进行流式加载,减少内存占用,适合大世界的制作。renderer
和shadow caster
的分开culling
,解决影子问题。