上海 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
,解决影子问题。