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

引言:

      一直工作比较忙,很久就想写点东西做个备忘,拖延至今。本系列也期望督促自己坚持记录分享,文中如有笔误或者理解偏差,欢迎各位指正交流。也期望未来基于该系列文章的相关代码同步到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/
Irrlichtzlib/libpng许可证,面向对象、文档丰富以及可以找到一些相关编辑器,特性比较全面,稳定性较好,比较容易上手;http://irrlicht.sourceforge.net/

Godot

MIT许可证,具有灵活编辑器、可用于开发2D、3D、支持脚本、可以一键部署到多个平台,有着比较完整的文档支持;https://github.com/godotengine/godot
Horde3D/Urho3DMIT许可证,Urho3D基于Ogre跟horde3d,支持2D、3D,代码质量较高、架构清晰易懂包含PBR等特性,有简单场景编辑器https://urho3d.github.io/
GamePlayApache2.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虚幻竞技场3Epic 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渲染有比较好的了解。

      

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值