引言:

一直工作比较忙,很久就想写点东西做个备忘,拖延至今。本系列也期望督促自己坚持记录分享,文中如有笔误或者理解偏差,欢迎各位指正交流。也期望未来基于该系列文章的相关代码同步到git上,最终完成一款高性能跨平台3D渲染引擎;

何为3D渲染引擎,借用百度百科的解释吧:

3D引擎作为一个名词已经存在了很多年,但即使是一些专业的引擎设计师,也很难就它的定义达成一个共识。通常来说,3D引擎作为一种底层工具支持着高层的图形软件开发。你可以把它看成是对3D API的封装,对一些图形通用算法的封装,对一些底层工具的封装。我无法准确的定义3D引擎的含义和作用,因为针对不同的用户和开发项目,3D引擎完成的功能可能都有不同。因此,我将从功能的角度来定义3D引擎,这种定义法也许能更确切的表达出一个3D引擎的真实含义。

功能具备:数据管理、渲染器、交互能力。

本文作为高性能跨平台渲染引擎第一节,主要跟大家一起分享一下现有渲染引擎(主要支持跨平台的也就是底层是C++或C语言实现),大家可以通过给出的链接下载尝试使用学习一下,再接下来章节主要分享OpenGL|ES渲染管线、3D高性能渲染引擎架构、vulkan渲染管线、GPU、基于GPU的camera数据处理等相关知识点。

免费引擎:

      免费3D渲染引擎有上百款,大家可自行查阅到或者看以前分享的https://mp.csdn.net/postedit/50904465 ,这里仅仅列举几款比较常用的,在文档以及使用方面比较广泛的几款供学习。

引擎名称 特性 链接
OGRE

MIT许可

证;面向对象,插件扩展、文档丰富;支持脚本、物理碰撞检测等特性比较全面,稳定性较好,但是上手有点难度;

https://www.ogre3d.org/
Irrlicht zlib/libpng许可证,面向对象、文档丰富以及可以找到一些相关编辑器,特性比较全面,稳定性较好,比较容易上手; http://irrlicht.sourceforge.net/

Godot

MIT许可证,具有灵活编辑器、可用于开发2D、3D、支持脚本、可以一键部署到多个平台,有着比较完整的文档支持; https://github.com/godotengine/godot
Horde3D/Urho3D MIT许可证,Urho3D基于Ogre跟horde3d,支持2D、3D,代码质量较高、架构清晰易懂包含PBR等特性,有简单场景编辑器 https://urho3d.github.io/
GamePlay Apache2.0许可协议;由黑莓推出,代码也具有比较好的借鉴参考意义; http://www.gameplay3d.io/

商业引擎:

引擎 特性 网站
Unity

手游的第一选择,有很多的教程和文档(特别对于入门级开发者);

使用C#和JavaScript编码(C++可以在特定领域使用,但并不推荐);

比较友好,可用插件较多,开发效率高;

简易且直观的UI界面及易上手学习设置;

适用用低配置的硬件。


UE

入门级的开发者可以在网上找到很多教程和文档;

有专用的设计资源和优化公司,打造高端和沉浸式VR;

使用蓝图(可视化编程)。拖拽节点和定制C++代码。然而,并非听起来这么容易,蓝图有自身的学习曲线;

免费;

可预先构建框架,快速创建环境和粒子系统,百万级渲染;

更好的画质,材质编辑器较好;

引擎的源代码可以从Github开源社区下载,意味着开发者实质上可以修改任何任何东西,包括物理引擎、渲染和图形用户界面。

 

游戏以及使用的引擎

引擎 游戏 公司
Nebula Device 3 黑暗之眼 Radon Labs
GoldSrc 半条命 Valve
SAGE 引擎 命令与征服; 
命令与征服3:泰伯利亚战争; 
魔戒:中土大战II
EA
Source引擎 半条命2; 
Sin Episodes; 
魔法门之黑暗弥赛亚
Valve;
Ritual Entertainment;
Arkane Studios
CryENGINE 孤岛惊魂 Crytek
CryENGINE2 孤岛危机 Crytek
Essence 引擎 英雄连; 
英雄连:对立前线
Relic Entertainment
Scimitar 刺客信条 育碧公司
Alamo 星球大战:帝国战争; 
星球大战:帝国战争-堕落之军; 
宇宙战争:地球突击战
Petroglyph
Unreal Engine 3 虚幻竞技场3 Epic Games
Doom 3 引擎 毁灭战士3; 
雷神之锤4; 
深入敌后:雷神战争
Id Software
Neon 引擎 闪点行动2; 极速房车赛 Codemasters
GFX3D 复活 (游戏)、天骄 目标软件公司

总结

对渲染感兴趣的,可以针对以上1-2款渲染引擎进行分析学习,相信很快就可以上手了。不过可能会存在疑问,市面上这么多开源渲染引擎了,为啥还需要自己再写一套?是否有必要?

其实这个问题在于如何看待,对于是否开发一款自研引擎,主要通过如下几方面做权衡吧:

(1)收益

也就是你在一个项目中用到3D渲染的时候,首先需要评估现有的引擎是否能够满足项目需求,比如有的项目要求渲染引擎高效、精悍,编译后只有几百K或者2M以内,那这样很多开源引擎就满足不了了;

(2)意义

因为开发一款3D引擎需要比较大的人力与精力,而且需要大量的工具链做支持,这些都得作为考虑,因为一款灭有工具链(比如编辑器)支持的引擎,很难比较高的提高开发效率,毕竟引擎是为了提升开发效率,同时也会有非RD使用,所以比较友好的工具链是必须的。

再就是自研引擎并不能带来长期的技术储备,这点不如有大量学习资料的商业引擎,掌握后可以在不同企业之间运用,但是你是本着做平台的情怀的话,自研引擎还是很有优势的,你的影响力足够大,可以吸引很多人在你的平台制作case。

(3)如何实现

这就是需要根据对引擎的定位,设计可行的架构,其实首要的还是实现,先实现再谈架构,因为实现之前比较难想清楚具体的架构,花费很多精力做一个自以为完美的架构设计,后来可能会因为性能或者算法实现推翻你的架构,当然对于多次写过3D引擎的,一开始的架构规划可能就直接决定引擎的性能了。

接下来章节主要介绍渲染引擎常用的基本模块功能,以及我目前认为还可以的架构。当然选择跨平台,就以为的底层需要基于C/C++实现,OpenGLES作为渲染管线,当然后期可以基于不同平台自动支持其他高效渲染管线,比如X86下的DX、Android的下的Vulkan以及mac ios下的metal等。

后期也会对OpenGL、vulkan等进行简单介绍、以及基于GPU的视频特效以及视觉算法的处理。通过本系列分享可以对基本的3D渲染有比较好的了解。

高性能跨平台渲染引擎系列一: 跨平台渲染引擎简介相关推荐

  1. Torque引擎系列

    介绍一下Torque引擎,包括脚本.编辑器的使用.以及引擎部分. 第一部分:脚本入门 ************************ 1)打开控制台(console) 运行torquedemo.ex ...

  2. Qt移动应用开发(八):实现跨平台的QML和OpenGL混合渲染

    Qt移动应用开发(八):实现跨平台的QML和OpenGL混合渲染 上一篇文章讲到了利用C++这个桥梁,我们实现了QML和Java的交互.Qt 5大力推崇的QML/JS开发,让轻量.高速开发的QML/J ...

  3. 高性能Web动画和渲染原理系列(3)——transform和opacity为什么高性能

    [摘要] 研究Web高性能动画及原理 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文目录 关于opa ...

  4. alphaTab是一个跨平台音乐符号和吉他tablature渲染库

    alphaTab是一个跨平台音乐符号和吉他tablature渲染库 源代码名称: alphaTab 源代码网址: http://www.github.com/CoderLine/alphaTab al ...

  5. 整理:微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog

    学习网站:微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog 其中涉及知识: 垃圾回收机制 垃圾回收(garbage collection,简称GC)可以自动清空堆中不再使用的对象. ...

  6. 高性能Web动画和渲染原理系列(4)“Compositor-Pipeline演讲PPT”学习摘要【华为云技术分享】

    [摘要] 学习chromium对合成层的处理 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文目录 附 ...

  7. webGL、webGPU、封装、渲染引擎 three.js、游戏引擎,定位是游戏开发,在前面的渲染引擎基础上,还提供了骨骼动画、物理引擎、AI、GUI 等功能,以及可视化编辑器来设计关卡,支撑大型游戏

    https://zhuanlan.zhihu.com/p/162878354 如何选择 WebGL 框架和引擎? ​ 知道得越多,不知道的就更多了 数据可视化Sugar-百度智能云 ​cloud.ba ...

  8. opengl游戏引擎源码_UE4渲染引擎模块简介(1)

    UE4官方文档中<Graphics Programming Overview>开篇即说:UE4的渲染代码太多故难以从宏观上快速预览它的全貌(There is a lot of render ...

  9. cpu渲染测试软件,CPU多核渲染大比拼 Corona 引擎测试

    Corona测试理顺平台 提到处理器的综合性能,硬件爱好者们会想到各种各样的测试软件--喜好游戏的,3Dmark见真章:工作需要转码的,各种X264\H265 Benchmark都能满足需要:喜欢研究 ...

最新文章

  1. 机器学习(MACHINE LEARNING)灰色关联分析(GRA)
  2. java中上转型概念_在java 中,什么叫向上转型?
  3. 076_浏览器对象模型
  4. 【思维】中位数与顺序统计
  5. Html5table控件,Table Web 控件、TableRow Web 控件及TableCell Web 控件
  6. python 建筑建模_不可错过的python 街道数据爬取和分析神器!
  7. wirkshark过滤规则
  8. Intel Core Enhanced Core架构/微架构/流水线 (2) - 代表处理器
  9. javascript : spket 视频教程
  10. 树莓派实战:微信机器人(itchat实现)
  11. html 掉爱心特效,微信发什么会掉爱心特效(微信特效词语合集)
  12. ONES 解码:为何数字化是“超级工程”
  13. 大白兔奶糖三聚氰胺事件后21日起重新上架
  14. 愿在以后的日子里,即使单枪匹马也能勇往直前
  15. 雪晴数据网 - 在线学习数据科学技术
  16. Harbor私有镜像仓库——高可用
  17. iOS CGAffineTransform你了解多少?
  18. MacBook 卸载ESET Endpoint Antivirus
  19. Deep Interest Network
  20. java计算机毕业设计小区宠物管理系统源码+数据库+系统+lw文档+mybatis+运行部署

热门文章

  1. web前端开发面试,电商运营和前端开发哪个好
  2. hibernate 配置自动创建表
  3. 逆向——Mac使用OpenSSH远程连接越狱iPhone
  4. 讲真的,你与大厂只差这篇面经!教你如何通过蚂蚁面试、成功转正和升职加薪!
  5. pytorch JIT
  6. 荣誉 | 百望云荣登“2022全球独角兽企业500强”榜单
  7. Linux驱动中delayed workqueue用法
  8. mysql delayed_MySQL INSERT DELAYED
  9. 【NOIP模拟赛】迷路 expand 题解
  10. 大学生返乡回农村种植有机水果,带领农民走上创富之路