一名“老”引擎程序员的昨天、今天和明天
目录
昨天——使用3D实时引擎和负责技术支持
初识3D实时引擎——Java 3D
CryEngine 3
OGRE
UE
cocos2d-X
Urho3D
Godot
Unity3D
昨天——自研引擎
自研CrazyEngine 1.0练手的第一代游戏引擎
自研CrazyEngine 2.0第二代游戏引擎
自研CrazyEngine 3.0第三代游戏引擎
自研CrazyEngine 4.0第四代游戏引擎
昨天——原创的技术
阴影防止边缘抖动
动作缓存进纹理实现同屏百万级别的角色渲染
地形材质层预混合
昨天——其它
截帧工具
分布式纹理压缩
内部技术分享
翻译并出版了《 Vulkan programming guide》
今天——CE 5.0
实时GI
实时光追反射
GPU-driven rendering pipeline
海量角色渲染
其它
今天——其它
GPU烘焙器
在线培训
自媒体
明天
云引擎
引擎5.0时代
元宇宙
不知不觉中,跟游戏引擎的缘分已经将近20年了。最近机缘巧合下整理了下这些年的做过的东西,也展望下未来。电脑维修网希望自己不忘初心,方得始终。也电脑维修网希望借机跟还坚守在这个领域的同行们交个朋友,切磋切磋。
昨天——使用3D实时引擎和负责技术支持
初识3D实时引擎——Java 3D
2005-2007年,就读于北京理工大学,攻读硕士学位。自学轻量级引擎Java3D,完成课题“3D仿真在化工场景动态搭建的应用”。Java 3D是个轻量级游戏引擎,支持网页上运行。
CryEngine 3
2012.12 – 2013.5,在畅游使用CE 3.6做《仙剑Online》项目,任引擎接口人的职位。CE是我个人最喜欢的引擎,性能和效率达到了非常好的平衡,在后来的工作中经常研究其渲染算法,获取灵感。只是易用性太差,CryTek一度濒临倒闭。
OGRE
2013.5 – 2015.12,在北京远明山水网络科技有限公司任职引擎部门经理期间,带领10人团队魔改Ogre 1.8,开发“盘古引擎”。
UE
2016.3 – 2016.9,在巴别时代使用UE4做VR和ARPG demo。UE的渲染效果是目前最好的,在后来的工作中经常研究其渲染算法,尤其是PC端的延迟管线,以获取灵感;但性能相较CE低不少。
写过几个插件。例如支持CUDA解码视频流的插件,RTX 2080上能支持47路1080P视频流的解码。
cocos2d-X
2017.3 – 2018.2,在有爱互动使用cocos2d-X做slg项目《红警Online》。cocos2d-X的好处是开源,源码简单易修改。坏处是3D和工具部分是严重短板,官方正在补齐。
Urho3D
个人第四代引擎就是基于这个开源引擎实现的。
Godot
预计个人第五代引擎会基于这个开源引擎实现。
Unity3D
2018.3至今,在手游公司负责Unity3D引擎技术支持,主要的内容有性能优化,实现渲染效果,解决兼容性问题。
昨天——自研引擎
自研CrazyEngine 1.0练手的第一代游戏引擎
2007年毕业,到2009进入游戏行业之前,业余时间自己写了一个“麻雀虽小,五脏俱全”的玩具,用于个人练习各种算法和模块。主要的技术点有视差贴图、具有遮蔽功能的镜头光晕、实时合批等。由于当时的图形API还不支持实例化合批,用的技术是寄存器常量合批,很有年代感的技术。
自研CrazyEngine 2.0第二代游戏引擎
2009年进入游戏行业到2012年,带团队自研了一个3D引擎,用于《圣殿之光》、《希腊神话》等MMO RPG项目
自研CrazyEngine 3.0第三代游戏引擎
2013.5-2015.12,在北京远明山水网络科技有限公司担任引擎部经理期间带领团队开发。主要的技术特性有全实时光照、Hybrid deferred shading、动态天气、千人同屏、捏脸等,详细内容见
Crazy Engine 3.0(又名盘古引擎)的技术特性_Crazy Engine的博客-CSDN博客零、概述“盘古引擎”是我2013.4-2015.12年间,在“远明山水网络科技有限公司”担任引擎部部门经理期间,带领9人团队研发的第三代大型3D游戏引擎。这代引擎使用Ogre 3D作为框架,使用C++、D3D 9.0c、HLSL 3.0、OpenAL、PhysX3.2和MyGUI作为开发语言或者中间件。研发团队研究了大量国际上顶尖的论文,借鉴和吸收了大量的高端算法和设计模式,也借鉴了其它世界闻名的游戏引擎,如CryEngine 3和Frostbite。,我们也花费了大量时间,研究出了一些自己https://blog.csdn./CrazyEngine/article/details/114579286?spm=1001.2014.3001.5502
2015.5录制的新手村场景
见Crazy Engine 3.0(又名盘古引擎)——新手村_哔哩哔哩_bilibili
全实时光照
见Crazy Engine 3.0——24小时动态变化光影(Time Of Day)_哔哩哔哩_bilibili
动态天气
见Crazy Engine 3.0——动态天气_哔哩哔哩_bilibili
千人同屏
捏脸
自研CrazyEngine 4.0第四代游戏引擎
2016-2020年,业余时间带领一个虚拟团队开发,对标UE4渲染效果,最大特点是画面真实、Lightmap的烘焙速度很快
引擎截图(视频见Crazy Engine 4.0 alpha版_哔哩哔哩_bilibili)
2016年之前一直在自研端游引擎,引擎里都是实时光影,因为要支持动态天气。由于没有合适的实时GI算法,室内只能用点光源来模拟GI,效果一直不好。室外没有GI,因为支持SSAO和天光/地光算法,效果也还可以。
2016年进入手游游戏行业以后,不论使用Unity还是UE,都需要离线烘焙lightmap。虽然效果好,烘焙时间实在太长了,严重影响项目的快速迭代。虽然后来出现了progressive、GPU烘焙等改进方案,还是远远达不到实时级别的预览,很影响美术的快速开发。
为了解决这个问题,2019-2020年开发了一个快速的烘焙器,目前已经能将中小场景的烘焙时间控制在3秒以内,下一步优化性能,电脑维修网希望能在大场景下也达到实时级别的预览。
烘焙器演示(视频见Crazy Bakery Alpha版解说_哔哩哔哩_bilibili)
昨天——原创的技术
阴影防止边缘抖动
2010年左右原创的技术。由于阴影分辨率有限,摄像机移动时,场景里法线方向跟太阳方向接近垂直时总会闪烁地非常厉害,,地面上阴影边缘也会疯狂闪烁。搞清楚了问题的根源,解决方案就简单了。只要让物体渲染到阴影上时,像素密度保持不变,并且将起始位置进行圆整就行了。虽然这个方案解决不了运动物体的阴影的边缘闪烁,场景里毕竟绝大多数是静态物体,效果改善非常明显。
后来Unity里内置阴影的“Stable Fit”跟这个技术原理完全一样。
动作缓存进纹理实现同屏百万级别的角色渲染
我们在很多资料里看到过这种类似说法“xxx合批算法,但不支持带骨骼蒙皮的物体”。确实,每个带蒙皮的DC都有自己独特的动作,需要传入矩阵,会破坏合批。而公司的项目主打的特色是“千人同屏,万人国战”,甚至十几万人的攻城战,所以这个问题必须要解决。有的公司尝试过多种方案,例如多线程计算骨骼变换矩阵+SIMD,或者在CUDA上计算,但都只能部分缓解性能压力,不能从根本上解决。我们原创了将骨骼变换矩阵缓存到RT上的方案,这样既避免了运行期间大量的骨骼变换矩阵的更新,又不破坏合批,再加上模型LOD,支持同屏渲染1000个角色很轻松。再配合imposter等技术,渲染百万级别的角色理论上是完全可行的。
2015年底项目和公司解散,随着引擎团队各分东西,这个技术在业界得到了广泛地应用。后来还有人将这个技术进行了改进,直接存储变换好的顶点,更加适合手游这种算力有限、顶点数量也较少的应用场景。
后记后来无意中翻看GPU Gems 3里的一篇文章,发现跟这个技术实现几乎完全一样。按照实现的时间来说,这个技术不属于我们团队的原创。但确实是我们自己在面对千人同屏这个需求时琢磨出来的。
地形材质层预混合
2017年支持“红警Online”手游项目时提出的,渲染地形时,能大幅度减少过多的纹理读取造成的带宽和算数指令的开销。
2020年底又用于公司3D MMO RPG手游中的地形优化。在iPhone上实测,有30%的帧率提升,在带宽相对来说不友好的安卓机器上会有更好的表现。
2019年9月4日发布的UE 4.23开始的支持Run Time Virtual Texture(RVT)跟这个技术原理一样,做的要复杂和强大的多,毕竟是国际一流的引擎团队。之后4.24进行了改进优化,4.25对手机进行了支持。
昨天——其它
截帧工具
2015年,美术提出需求,想借鉴一下行业标杆型端游的美术制作标准,例如模型面熟、捏脸模型怎么布线和绑定等。像天刀、天谕这种大作都有防截帧的功能,GPA等工具都不能截取。正好这时自研引擎经过两年开发也比较成熟了,所以有时间去开发一个“强力”截帧工具,取名“GPA plus”。经过半年时间里断断续续地开发,最终几乎能截取市面上的所有基于D3D 9开发的32位端游。
分布式纹理压缩
使用Unity开发跨平台项目的人都知道,Build Settings里切换平台时,会根据每个纹理指定的对应平台的压缩格式去压缩纹理,并根据mipmap相关的设置自动生成纹理的mipmap。这两个过程非常慢,并且打包机器上的CPU性能不同会有不同的时间占比。公司里的项目反映会占用总时间的一多半,我在自己2017年春购买的Macbook pro上测试一个工程,目测占据了95%的时间。
所以2018年写了个技术demo,使用分布式压缩技术实现了平台的快速切换,见
Unity里加速纹理压缩_Crazy Engine的博客-CSDN博客使用Unity开发项目的人都知道,Build Settings里切换平台时,会根据每个纹理指定的对应平台的压缩格式去压缩纹理。压缩纹理非常慢,会占用总时间的一多半。那能不能把这个时间降下来呢?2018年秋就接到了公司的这个需求。网上看到有人之前尝试着解决这个问题,说白了就是把压的工作从烂CPU(作者指的主要是Mac)转移到强大的CPU上(主频高、核多),见https://blog.codingno./2016/12/unity3d_remote_pvrtextool.html。这个方案至少打开了https://blog.csdn./CrazyEngine/article/details/114238760?spm=1001.2014.3001.5502
内部技术分享
技术分享。平均每个月面向全公司举行一次正式的技术分享,引擎团队内部的技术分享几乎每周都有。
翻译并出版了《 Vulkan programming guide》
今天——CE 5.0
经过2年技术调研和demo验证,2021.12.21正式启动,电脑维修网希望能完成从技术追随者到引领者的转变。主要特性有
1、综合利用传统光栅化、计算着色器、光追的优势。
2、深入挖掘GPU-driven的性能优势。
3、主要面向云渲染和XR,实时渲染效果预计能达到3A级影视的级别。
实时GI
移动端上效果基本正常,已经打包到各个主流平台上进行测试,中小场景下iPad Pro上能流畅运行。下一步继续改善效果,并集中进行性能优化,预计在大场景(500米 x 500米)下,中档手机(例如iPhone 8 plus)下的实时GI开销控制在1-3毫秒。
实时光追反射
GPU-driven rendering pipeline
对于大场景,基本上消除了CPU上的性能开销
海量角色渲染
华为Mate 30 Pro(4096角色+4.4百万三角形)
RTX 2080(100万角色+364.6百万三角形)
还有巨大的优化空间,预计华为Mate 30 Pro下可以实现百万角色渲染,并且达到30FPS以上;RTX 2080上可以在100万角色+364.6百万三角形的情况下达到60FPS。
其它
FSR、DLSS等。
今天——其它
GPU烘焙器
正在实现一款极速GI生成器,支持Unity和UE,电脑维修网希望在超大型场景里,也能达到实时的previe全局光照效果,基于Lightmap或者Probe。
在线培训
这些年一直在带引擎团队,招人和培养团队就是一项重中之重的工作内容。引擎程序员一直很难招聘,尤其是最近两年北京游戏人才外流严重,加上商用引擎的普及也让引擎方面的人才出现断崖式的下降,感觉更难招聘。一直以为只有中小型公司存在这种现象,但后来跟几个大厂的朋友聊,也是很难招。
有感于此,2021年春天开始,利用业余时间组建了个虚拟的工作室,专门出引擎相关的收费在线视频教程。主打的特色是讲操作,更讲原理。这一点比绝大多数教程里只是讲操作要好很多,毕竟引擎程序员和TA都要知其然还要知其所以然。想的也比较简单,就是方便自己培养和招聘引擎相关的人才。经过不到一年时间摸索,我们出了将近十套教程。老师有了不少收入,也有了一些名气。欢迎想分享的朋友们加入我们,一起为行业做些贡献。目前我们教学群里也有了几百人,有点“天下英才尽入吾彀中”的感觉。并且也顺便开通了自媒体账号,专注于引擎技术方面的科普。
在线视频教程目前都在About CG网站上,网址是ABOUTCG讲师|CrazyEngine,欢迎惠顾。
自媒体
定位引擎类的科普,见CrazyEngineCo的个人空间_哔哩哔哩_Bilibili。
明天
总体上,电脑维修网希望从跟随者转变成引领者。
云引擎
由于手机硬件性能和电池技术进入瓶颈期,玩家要想有更好的游戏体验,手机是做不到。随着5G的普及,以及流量的费用降低,云游戏是目前可预见的唯一解决方案。
目前的云游戏还处于初级发展阶段,说白了就是将存量游戏放到云端,终端只是个“视频播放器”。并且现有的引擎都还是单机运行模式。云引擎是真正的分布式引擎,我认为这是未来的发展方向。详细信息见
云游戏的1.0和2.0_Crazy Engine的博客-CSDN博客纵观历史,基础科学和基础设施的发展都会开创新的时代。比如说造纸技术的发明,直接大幅提升了知识的传播速度;指南针的发明开启了大航海时代;瓦特改良了蒸汽机,直接将人类带入了蒸汽时代;法拉利发明了发电机,把人类带入了电气时代;计算机和互联网的出现,又将我们带入了信息化时代。那么接下来又会出现哪些改变人类社会的新技术和基础设施呢?公认的有3个5G、云计算和人工智能。而云游戏正是利用了5G和云计算,所以前途不可限量。目前绝大部分游戏公司都在开发移动端游戏,那么为什么要发展云游戏呢?痛点主要有两方面手机https://blog.csdn./CrazyEngine/article/details/112910076?spm=1001.2014.3001.5502
引擎5.0时代
随着UE 5.0 EA版本的发布,标志着引擎渲染技术进入了一个新时代。最核心的技术包括实时GI和模型支持超多的三角形,见官方的“古代山谷”这个场景。,这个demo对硬件的要求太高了。
我个人未来一两年的愿望是,能进一步优化,或者选型新的技术,把这个场景塞到手机上跑。详情见
Crazy Engine 5.0 (Plan on first stage)_Crazy Engine的博客-CSDN博客Main target: distributed game engineSecondary target: ne rendering pipeline on mobile.Feature:1. Hybrid rendering pipeline, make the best of rasterization, pute pipeline and raytracing unit.2. Physically-based realtime GI,3.昨天正式启动,忘了发。先..https://blog.csdn./CrazyEngine/article/details/122070175?spm=1001.2014.3001.5502
元宇宙
我知道,很多做技术的朋友一看到这个就想吐,说这又是资本的骗钱游戏。我亲身也经历过前两年的VR泡沫,对资本过度炒作一个新兴的业态也很反感。我们抛开这些外部的噪音,技术人员应该有自己理性的判断。我认为这个业态一定是未来,并且对我们当今社会的重构可能远超我们今天的预想,就像互联网。但这远远不会像资本热钱期待的那么快。
这个方向值得我用剩下的职场生命去深耕。
空调维修
- 海信电视维修站 海信电视维修站点
- 格兰仕空调售后电话 格兰仕空调维修售后服务电
- 家电售后服务 家电售后服务流程
- 华扬太阳能维修 华扬太阳能维修收费标准表
- 三菱电机空调维修 三菱电机空调维修费用高吗
- 美的燃气灶维修 美的燃气灶维修收费标准明细
- 科龙空调售后服务 科龙空调售后服务网点
- 华帝热水器维修 华帝热水器维修常见故障
- 康泉热水器维修 康泉热水器维修故障
- 华凌冰箱维修电话 华凌冰箱维修点电话
- 海尔维修站 海尔维修站点地址在哪里
- 北京海信空调维修 北京海信空调售后服务
- 科龙空调维修 科龙空调维修故障
- 皇明太阳能售后 皇明太阳能售后维修点
- 海信冰箱售后服务 海信冰箱售后服务热线电话
- 海尔热水器服务热线