前几年写过一本书《手把手教你架构3D游戏引擎》电子工业出版社,主要内容讲的是固定流水线编程,目的是让读者理解第一代引擎是如何实现的,从本篇博客开始,给读者介绍关于使用可编程流水线自己搭建3D游戏引擎,我将它设为高级篇,我会从查资料学习技术最基本的讲起,教给读者如何一个人搭建一款接近商业的自研引擎,希望读者能学习到搭建引擎的一些小技巧,帮助你理解可编程流水线引擎流程,以及提升你优化引擎的能力,3D游戏引擎其内在的本质是相同的,只是表现方式不同而已,所以学习自己搭建一款引擎对你技能的提升帮助非常大,至少你再接触其他引擎时,做二次开发信心还是大大的有滴,而且更有助于你理解Unity引擎的开发以及后期优化。

市场上对于3D游戏引擎的开发需求还是非常大的,虽然Unity和UE4非常成熟了,还是有很多大厂自研引擎,另外一些做虚拟仿真公司也在自研引擎,毕竟自研引擎的代码是我们自己写的,有什么问题可以快速的定位,而且可以针对项目的需求做一些定制开发,非常方便,底层代码也可以根据项目需求做一些优化。有自研引擎的公司都会有自己的引擎部门,它们的职能就是负责引擎的开发以及优化。对于自研引擎,说的明白一些就是我们可以针对自己的项目针对性的开发一款引擎,这款引擎功能并不需要多强大,能满足我们项目求即可。引擎的开发是一个团队的事情,一个人很难制作出一款成熟的商业引擎,工作量太大,开发周期也会漫长,涉及到的技术点也比较多,但是作为引擎开发人员对于引擎常用技术还是需要掌握的。假设公司让你组建引擎团队,开发一款商业引擎,我们应该从哪几方面入手:
首先要清楚我们的引擎是用于什么项目开发?
我们的引擎需要解决什么问题?
需要开发哪些编辑器?
如何利用现有技术帮我们解决问题等等
这些问题我们引擎开发人员必须要解决的,从本篇博客开始,我就教大家如何开发商业引擎?同时回答上面提到的问题。
下面我们先从引擎能解决的问题讲起,这个非常重要的,因为它关系到你的引擎是否足够强大,能否解决项目提出的各种需求。
每款引擎都有自己的特色,比如Unity引擎和UE4引擎,我们自研引擎也有自己的特色,后面的开发也就是围绕这些特色展开,给读者列举如下:
- 引擎平台支持

,我们的引擎支持windows和Linux,OS是64位的,在Windows平台的编辑器是Visual Studio2017,在Linux平台的编辑器是GCC5。
- 引擎基本功能

这个关乎我们代码的编写:
引擎架构是基于组件模式开发的;
支持代码以及资源热更新;
数据驱动的;
支持插件模式,
跨平台的
便于其他插件的使用,扩展引擎功能;
支持脚本Lua编程;
内置调试器;
支持数据打包;
下面再介绍渲染模式。
- 引擎渲染

引擎渲染也是引擎非常重要的模块:
我们的引擎支持D3D11和OpenGL图形API;
支持延时渲染;
支持PBR,
支持HDR,
多线程渲染,
数据定义管线,
支持Shader脚本热更新,
着色器语法类似GLSL。
FBX模型
支持9种纹理格式,
支持材质热更新
支持模型的LOD,
地形采用CDLOD,
可自动实例化模型,
基于高度的雾效
水的渲染,
毛发渲染
空气散射
延时贴花
天空盒等等。
再介绍后处理渲染,先介绍实时阴影渲染,我们的算法采用的是CSM,后处理算法有
景深渲染
Tone Mapping,
HDR,
GodRays,
Bloom,
SSAO,
抗锯齿FXAA等等。
声音我们采用的是OGG格式,另外还有粒子系统,网络,物理碰撞,骨骼动画,GUI,Navigation等等。
- 引擎编辑器

判断一款引擎是否成熟,我们需要开发相对应的编辑器工具链:
Shader 编辑器用于Shader脚本开发以及调试,
Packing打包编辑器用于资源的打包,
粒子编辑器,
Animation动画编辑器,
UI编辑器,
场景编辑器等等。
- 第三方库
我们的引擎不可能什么事情都需要自己从头写到尾,即使Unity和UE4也用了很多插件,我们的引擎也不例外,我们也需要用到第三方插件,比如:
Lua
BgFX等等,后面会给读者详细说明。
- 小结

以上是我们自研引擎的要实现的功能,虽然相比Unity和UE4,功能方面还不完美,相信随着我们把引擎框架搭建起来后,功能可任意扩展,从而把引擎功能持续完善起来。每一款引擎都是从不成熟到成熟,Unity和UE4也是这样的,上面列举的要实现的功能,对于个人开发者来说已经非常庞大了。明知山有虎,偏向虎山行,从下篇文章开始,我教大家怎样去实现每个技术点,怎样查阅资料,以及把现有的,成熟的技术模块嫁接到我们的引擎中。

手把手教你架构3D引擎高级篇概述相关推荐

  1. 手把手教你架构3d游戏引擎pdf_一个在游戏行业摸爬滚打了十几年的人,为何我对这本书情有独钟...

    Big News!<游戏开发:世嘉新人培训教材>今日开始预售啦!经过漫长的等待,这次终于可以买到了.现在下单,你将在图书出印厂的第一时间收到书哦- 这本书由世嘉一线开发者执笔,并被选为世嘉 ...

  2. 手把手教你架构3d游戏引擎pdf_白鹭引擎团队即将发布 Egret Pro,并公布后续路线图...

    各位开发者好. 春节前,白鹭引擎团队发布了 Egret3D 1.4,引入了大量新特性.上周,白鹭引擎团队发布了 5.2.14 版本,修复了多个白鹭引擎2D渲染器相关的 BUG,接下来我们会在下周继续发 ...

  3. 手把手教你架构3d游戏引擎pdf_游戏开发中的算法

    游戏技术这条路,可深可浅.你可以满足于完成GamePlay玩法层面的东西,你也可以满足于架构和框架设计层面的东西,你也可以醉心于了解某一游戏引擎带来的掌控感.但是,我们不该止步于此,止步与目前所见或所 ...

  4. 一文搞定!手把手教你文字识别(识别篇:LSTM+CTC, CRNN, chineseocr方法)

    个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 文字识别是AI的一个重要应用场景,文字识别过程一般由图像输入.预处理.文本检测.文本识别.结果输出等环节组成.   其中,文本检测. ...

  5. windows脚本编制引擎_手把手教你写脚本引擎(一)

    手把手教你写脚本引擎(一)--挑选语言的特性 陈梓瀚 华南理工大学软件本科05级 脚本引擎的作用在于增强程序的可配置性.从游戏到管理系统都需要脚本,甚至连工业级产品的Office.3DS Max以及A ...

  6. 手把手教你编写游戏模拟器 - Chip8篇(1)

    转自 http://www.cnblogs.com/YiranXie/p/3439934.html 手把手教你编写游戏模拟器 - Chip8篇(1) 手把手教你编写游戏模拟器 - Chip8篇 翻译整 ...

  7. 手把手教你爬虫requests实战演练——python篇

    文章目录 一.前言 二.实战 1)获取百度网页并打印 2)获取帅哥图片并下载到本地 4) 获取美女视频并下载到本地 5)搜狗关键词搜索爬取 6)爬取百度翻译 7)爬取豆瓣电影榜单 8)JK妹子爬取 总 ...

  8. 还在买鲜花送女神?手把手教你搭建3D立体相册网站,包女神稀饭

    是不是一款人见人爱的相册网站,看下图演示马上知晓.360度3D立体旋转,随意放大缩小任一张照片,合适每一个女生的小胃口,保证女神眼前一亮,对您刮目相看. 我们的特点是--情人节圣诞节女神生日纪念日都适 ...

  9. win10计算机打开之后隐藏3d对象视频,Win10 3D对象文件夹如何隐藏?手把手教你隐藏3D对象文件夹...

    电脑升级至win10系统打开此电脑窗口时,发现多出了一个3D对象文件夹,这个文件夹对我们来说根本使用不到,所有放在有点多余且占用内存空间,那么有什么办法把3D对象文件夹给隐藏起来?如果想要隐藏3D对象 ...

最新文章

  1. 实验4  数据的安全性管理
  2. iOS7系统iLEX RAT冬青鼠安装教程:无需刷机还原纯净越狱系统
  3. php将中文插入数据库出现乱码
  4. SAP Leonardo及客户案例
  5. 系统架构设计师 - 面向服务架构 SOA
  6. QT5开发及实例学习之十九图形视图体系结构
  7. 为什么现在越来越多的人不愿换新机?最后一个原因扎心了
  8. 长沙戴维营教育iOS开发面试题周刊
  9. windows8怎么关机_按下电源键后发生了什么?电脑是如何关机的?
  10. HDU1880 魔咒词典【文本处理】
  11. 2020 计蒜之道 预赛 第一场 爆零记
  12. HBase + Kerberos 配置示例(一)
  13. Xcode无法识别真机
  14. emacs linux 教程,Emacs基础入门教程(三)使用 Emacs 必知必会
  15. python 有限域函数库_有限域(4)——程序实现有限域的运算
  16. 电子商务世界历程及国内历程
  17. 计算机在护理专业中的论文题目,护理专业论文格式(通用模板)
  18. Netcore磊科NW336驱动Win7下载 NW336 150M无线USB网卡驱动
  19. js月份的计算公式_JS获取指定月份的天数几种方法
  20. 【通信】基于Matlab实现动态帧时隙ALOHA(Dynamic Framed Slotted ALOHA)算法

热门文章

  1. JAVA程序设计基础(第六版)第四章课后习题
  2. el-table单元格换行显示,超出部分省略号
  3. java overdata_使用try-catch over条件来安全地设置值,并在java中以最小的性能影响...
  4. Material Design控件 之 CardView
  5. 情人节送女友什么礼物比较好,情人节送礼推荐
  6. 以老王老王为题,作为一首搞笑的押韵的诗
  7. 浅谈压缩算法的那些事儿
  8. 抖音养生号内容制作,创意思路分享
  9. python爬虫 京东,苏宁,小米众筹网站信息爬取
  10. 苹果x充电慢是什么原因_手机资讯:为什么 iPhone 充电从 99% 到 100% 时特别慢是电池故障吗...