高性能跨平台渲染引擎系列一: 跨平台渲染引擎简介
引言:
一直工作比较忙,很久就想写点东西做个备忘,拖延至今。本系列也期望督促自己坚持记录分享,文中如有笔误或者理解偏差,欢迎各位指正交流。也期望未来基于该系列文章的相关代码同步到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渲染有比较好的了解。
高性能跨平台渲染引擎系列一: 跨平台渲染引擎简介相关推荐
- Torque引擎系列
介绍一下Torque引擎,包括脚本.编辑器的使用.以及引擎部分. 第一部分:脚本入门 ************************ 1)打开控制台(console) 运行torquedemo.ex ...
- Qt移动应用开发(八):实现跨平台的QML和OpenGL混合渲染
Qt移动应用开发(八):实现跨平台的QML和OpenGL混合渲染 上一篇文章讲到了利用C++这个桥梁,我们实现了QML和Java的交互.Qt 5大力推崇的QML/JS开发,让轻量.高速开发的QML/J ...
- 高性能Web动画和渲染原理系列(3)——transform和opacity为什么高性能
[摘要] 研究Web高性能动画及原理 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文目录 关于opa ...
- alphaTab是一个跨平台音乐符号和吉他tablature渲染库
alphaTab是一个跨平台音乐符号和吉他tablature渲染库 源代码名称: alphaTab 源代码网址: http://www.github.com/CoderLine/alphaTab al ...
- 整理:微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog
学习网站:微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog 其中涉及知识: 垃圾回收机制 垃圾回收(garbage collection,简称GC)可以自动清空堆中不再使用的对象. ...
- 高性能Web动画和渲染原理系列(4)“Compositor-Pipeline演讲PPT”学习摘要【华为云技术分享】
[摘要] 学习chromium对合成层的处理 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文目录 附 ...
- webGL、webGPU、封装、渲染引擎 three.js、游戏引擎,定位是游戏开发,在前面的渲染引擎基础上,还提供了骨骼动画、物理引擎、AI、GUI 等功能,以及可视化编辑器来设计关卡,支撑大型游戏
https://zhuanlan.zhihu.com/p/162878354 如何选择 WebGL 框架和引擎? 知道得越多,不知道的就更多了 数据可视化Sugar-百度智能云 cloud.ba ...
- opengl游戏引擎源码_UE4渲染引擎模块简介(1)
UE4官方文档中<Graphics Programming Overview>开篇即说:UE4的渲染代码太多故难以从宏观上快速预览它的全貌(There is a lot of render ...
- cpu渲染测试软件,CPU多核渲染大比拼 Corona 引擎测试
Corona测试理顺平台 提到处理器的综合性能,硬件爱好者们会想到各种各样的测试软件--喜好游戏的,3Dmark见真章:工作需要转码的,各种X264\H265 Benchmark都能满足需要:喜欢研究 ...
最新文章
- 机器学习(MACHINE LEARNING)灰色关联分析(GRA)
- java中上转型概念_在java 中,什么叫向上转型?
- 076_浏览器对象模型
- 【思维】中位数与顺序统计
- Html5table控件,Table Web 控件、TableRow Web 控件及TableCell Web 控件
- python 建筑建模_不可错过的python 街道数据爬取和分析神器!
- wirkshark过滤规则
- Intel Core Enhanced Core架构/微架构/流水线 (2) - 代表处理器
- javascript : spket 视频教程
- 树莓派实战:微信机器人(itchat实现)
- html 掉爱心特效,微信发什么会掉爱心特效(微信特效词语合集)
- ONES 解码:为何数字化是“超级工程”
- 大白兔奶糖三聚氰胺事件后21日起重新上架
- 愿在以后的日子里,即使单枪匹马也能勇往直前
- 雪晴数据网 - 在线学习数据科学技术
- Harbor私有镜像仓库——高可用
- iOS CGAffineTransform你了解多少?
- MacBook 卸载ESET Endpoint Antivirus
- Deep Interest Network
- java计算机毕业设计小区宠物管理系统源码+数据库+系统+lw文档+mybatis+运行部署