链接: 和学霸一起学 | 《天涯明月刀手游》开发历程:让技术成为创新的驱动力.
链接: 【腾讯开发者大会】天刀手游开发历程.
链接: 【腾讯开发者大会】天刀手游开发历程(笔记).
真正原文,以下都是我自己作为新人瞎看瞎总结.
《天涯明月刀手游》开发历程
项目总结
项目的预设
帧率
对于端游,只需要考虑两个维度,帧率稳定以及画面效果,手游需要额外考虑第三维度"功耗"
“对应单核线程的持续工作,会带来手机芯片的功率提升,发热增加”
步骤
①美术达到预想表现
②,优化美术效果,让帧率达到稳定表现
③,不停迭代
光照与阴影的取舍
天刀工作组认为阴影的表达是低于光照的,所以阴影仍然使用LightMap来Bake Shadow方式制作阴影.
在大世界中,并没有使用实时阴影.
开发历程
时间 2017年至2020年
2017年,起步阶段, 美术与程序开始制作,暂时以跑起来为目标
2018年,在美术品质较高的情况下,开始妥善考虑优化问题
为了优化Drawcall,①渲染框架的更改(优化多核心处理,并将渲染命名调动到GPU上)
②使用Vulkan作为图形接口(与渲染管线需要同步修改啊,OpenGLes 对GPU渲染调度以及多核处理是后期修改的产物)
2019年,开始封测,画面效果提升,性能不断优化,美术效果与游戏内容为主.
2020年,冲刺一年,主要完成游戏内容开发,机型适配(下探适配机型).调整为主
贯穿的主线就是美术与技术的结合,性能与游戏性的调整.
2017年开始的起步,打地基阶段,目标放在跑起来.美术与程序进行功能添加,
(作为新人TA,我司现处于这个阶段,在满足要求的前提下,一定要注意拓展性.美术的流程制定要正确,也是我前期学习的阶段.)
2018年,满足高质量的效果情况下,稳步推进内容.考虑优化的方法
(前期的流程制定,在这个阶段就是表现的机会,针对问题,及时调整,一定要稳步推进,又灵活应对)
2019年,依旧稳步推进美术制作,性能优化迭代两年,美术效果迭代两年,已经应该达到或超过预期的效果.
(这个阶段作为TA一定要时刻考虑遗漏什么,效果如何更好等问题.)
2020年,冲刺年,主要目标已经是完善体验,适配机型等细节问题,到这个阶段,再出大问题可就麻烦了
MMORPG作为手游最高难度挑战
《天涯明月刀手游》的资源级别
挑战总结图
TA可以完成:
CPU Culling cpu上的粗粒度剔除,
GPU compute
True HDR 正确使用,制作HDR(线性工作流的重要性)
ColorSpace 色彩空间,再次提到,(关注线性工作流)
LOD 多细节层次
Auto Exposure :自动曝光.
Tonemapping :HDR映射到LDR的方法
PB Lighting :基于物理灯光
PB Material :基于物理材质
程序方面:
ISPC:加速图像处理 2020GDC上,ispc也是intel重点推进的技术,这里是在ue中的应用,将渲染更多放在GPU.
jobSystem:一个多线程系统,可以利用cpu多核,提高程序运行的帧率。
NEON: 被设计为一种附加的加载/存储体系结构,以从 C、C++ 等语言提供良好的矢量化编译器支持
MultipleThread: 多线程处理架构.
Vulkan 2015年新的图形API,对GPU渲染与CPU多核心的优化.
Native Native代码调用.
SIMD 单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集
GPU Synchronization CPU与GPU的同步问题
GPU Driven GPU Driven Render Pipeline-知乎.
MemManage 内存管理源码
四次对外测试的四次技术变革
引用原文–"这里面很多工作其实也并不是一开始就考虑到的,在四年的开发和测试周期里,我们也不断迭代,不断提出更高的要求。"
第一次测试我们主要对外验证的是多线程渲染框架。
Vulkan是我们第二次测试的技术里程碑
GPU Driven和Virtual Texture是第三次测试的技术里程碑。
PhysicallyBasedRender2.0系统
《天涯明月刀手游》的整个PBR2.0系统大致可以分为以下几部分:
①BRDF,这部分除了一些优化算法,不做大的简化,保证物理正确。
②LookDev制作管线,保证美术在各个环境下都能得到最终游戏内的视觉效果,制作正确的材质。
③完整的光照分量,充分考虑各种光照分量的物理正确性,通过对光照分量的拆分在游戏中体现Time of Day,体现动态的光照变化,体现遮挡信息。
④物理正确的渲染流水线,在材质信息、光的方向和遮挡等信息被正确计算的基础上,如何在相机里正确的表现亮度、颜色等最终被玩家接收到的信号也是非常重要的。符合物理的光源照度以及参考相机曝光原理为美术提供曝光设置可以保证美术能正确的设置亮度。再加上后期对Tonemapping算法的调整,使得玩家能看到非常自然真实的光照效果。
BRDF
GGX:是一种微表面反射光照模型,这种光照模型材质可以更好的表现金属高光边缘的消散(拖尾)效果
Lambertian反射.称作完全漫反射。这是一种理想情况,现实中不存在完全漫反射,但Lambertian可以用来近似的模拟一些粗糙表面的效果
物理正确的材料高效制作
光照分量的完整
Direct Lighting:①直接光照积分器.②Path Tracing中所谓的直接光照(大概用的是这个)
Shadow:在上文提过,使用的Bake的LightMap,而不是实时阴影
IndirectLighting:间接光照缓存.(材质受周围环境影响,GI全局光照的前置步骤)
IBL:Image Based Lighting( 基于图像的照明),可离线渲染完成后使用
SpecularOcclusion 反射遮蔽(结合IBL使用)
间接太阳光和天光:环境光的组成,间接光系统(光在物体反射后作为光源的光)
AmbientOcclusion;AO,后面可以看到,是有使用SSAO
物理正确的渲染流水线
①基于测量的物理正确的光照数值,物理相机的光圈
②sensor 传感器(用途未知)
③曝光和ToneMapping(色调映射)的实现
以下是一些效果的对比图:
PBR2.0系统下的夜景对比
原始场景:
PBR2.0的场景: