Skip to content

渲染引擎

渲染引擎是根据高级语言的绘图指令和图形源数据计算生成屏幕显示所需要的像素颜色数据的核心组件。

现代 GUI 程序底层依赖于通用渲染引擎提供图形的绘制能力,以此向用户呈现 UI 界面。在高级渲染场景中,例如影视和游戏程序中,渲染引擎需要暴露更多的高级接口,使得用户可以实现高级渲染效果。

渲染引擎集成了计算机图形学的众多算法成果,以实现高效和美观的像素颜色计算,包括 2D 图形和 3D 场景的渲染计算;为了提高计算速度,渲染引擎往往会操作 GPU 完成加速计算;同时,为了实现跨平台的渲染能力,渲染引擎需要屏蔽不同操作系统平台上的视图系统的差异,参考:linux 视图系统

渲染管线

渲染引擎是在各个图形 API 所提供的渲染管线上工作的

常见引擎

渲染引擎分为 2D 渲染引擎、3D 实时渲染引擎和 3D 非实时渲染引擎。

2D 图形和 3D 场景的渲染有着显著的差异,2D 图形的绘制可以直接基于一个有限大小的画布进行绘制,但是 3D 场景的渲染就要引入复杂计算机图形学理论,使用场景、灯光、相机等概念,将一个 3D 场景变成一张二维的图形。而且 2D 渲染一般使用简单的指令,3D 渲染往往需要使用 3D 模型作为输入,构建 3D 场景,其数据量陡然提升。

2D 渲染引擎

引擎名称主要用途代表作/应用备注
Skia通用 2D 图形Chrome, Flutter, Android多后端,性能优异
Direct2DWindows 原生 2DOffice, Edge, UWP微软原生,集成度高
Core GraphicsmacOS/iOS 原生 2DSafari, Xcode, AppKit苹果原生,集成度高
Blend2D矢量图形图形编辑器、嵌入式高性能矢量,C++实现
AGG高质量矢量图形编辑器、嵌入式软件渲染,抗锯齿
Pixman像素图形Cairo, X11, Waylandlinux 像素混合,底层库
Cocos2d/Cocos Creator2D/轻量 3D 游戏捕鱼达人,开心消消乐中国流行,移动端友好
PixiJSWeb 2D 渲染Web 动画、游戏WebGL 高性能
libGDX2D/3D 游戏框架Slay the SpireJava 开发,跨平台
RPG Maker2D RPGYume Nikki, OneShot专注 RPG,零编程门槛
Ren'Py视觉小说Doki Doki Literature ClubPython 脚本,视觉小说专用

3D 渲染引擎

在 3D 引擎中又分为实时渲染引擎和非实时渲染引擎,前者强调在短时间内完成快速连续的渲染,帧率要求 60 FPS,以适应例如游戏在内的软件交互式需求,为了达到这个目标,实时渲染必须舍弃部分画面质量,从而换取更快的渲染速度;后者强调高质量和高保真的图形渲染,不必追求实时性,以获得极高的视觉效果,往往适合于电影和静态图片制作。

其实区分实时和非实时渲染的原因是在于当前的图形渲染技术还不够高效,或者是硬件条件还没有能够完整覆盖常见的渲染质量需求,人们不得不做出妥协,从而将有限的资源进行特化。

光线追踪技术是一项典型的高质量渲染技术,需要消耗大量的资源。一般地,实时渲染引擎支持有限的光线追踪功能,并使用近似光照进行尽可能地模拟;而非实时渲染引擎力求获得更高级的渲染效果,往往能够支持更加复杂和完善的光线追踪。

引擎名称主要用途实时性代表作/应用备注
Arnold高质量渲染3ds Max, Maya, 影视动画光线追踪,电影级
Cycles高质量渲染Blender, MayaBlender 内置,开源高质量
Unity游戏/AR/VROri, Cuphead, Genshin Impact2D/3D 均支持,生态丰富
Unreal高保真游戏/虚拟制作Fortnite, 虚幻演播厅Nanite, Lumen, 高端渲染
Godot游戏3D 独立游戏2D/轻量 3D,社区活跃
CryEngine高端游戏Crysis, Hunt: Showdown画质极高,VR 支持
Babylon.js/WebGLWeb 3D 渲染Web3D 演示、游戏JS/TS,WebGL 渲染
Three.js/WebGLWeb 3D 渲染Web3D 演示、可视化JS,WebGL 渲染