1# AGP引擎
2
3## 简介
4AGP(Ark Graphics Platform)引擎是一款跨平台、高性能实时渲染的3D引擎,具有易用性、高画质、可扩展等特性。引擎使用先进的ECS(Entity-Component-System)架构设计,进行模块化封装(如材质定义、后处理特效等),为开发者提供了灵活易用的开发套件。AGP引擎支持Opengl ES/Vulkan后端,降低开发者对硬件资源依赖。
5
6AGP引擎的主要结构如下图所示:
7
8![AGP引擎架构图](./figures/graphic_3d_architecture.jpg)
9
10OpenHarmony 3D图形栈的分层说明如下:
11
12• 接口层:提供图形的Native API能力以及ECS组件系统。
13
14• 引擎层
15
16| 模块                     | 能力描述                                                                                       |
17|------------------------|--------------------------------------------------------------------------------------------|
18| 模型解析         | 提供解析GLTF模型的能力。                                                                               |
19| 材质定义            | 提供了PBR(基于物理的渲染)等材质的定义。                               |
20| 动画           | 提供动画引擎的相关能力,如刚体、骨骼等。                            |
21| 光照&阴影&反射 | 提供定向光、点光源、聚光源等光源;提供PCF(基于硬阴影的抗锯齿算法)等算法。      |
22| 后处理特效 | 主要完成ToneMapping(色调映射)、Bloom(高亮溢出)、HDR(高动态范围成像)、FXAA(快速近似抗锯齿)、Blur(模糊)等后处理特效功能。      |
23| 插件系统                | 提供了加载各种插件的能力,利用插件开发新功能。 |
24| 资源管理                | 此模块提供了资源管理能力,主要包含内存管理、线程管理、GPU资源管理等。 |
25| 系统抽象                | 主要包含了文件系统、窗口系统、调试系统等。 |
26
27• 图形后端:支持OpenGL ES、Vulkan后端。
28
29## 目录
30
31```
32foundation/graphic/graphic_3d/
33├── 3d_widget_adapter                  # 适配ArkUI接口代码
34├── lume                               # 引擎核心代码
35│   ├── Lume_3D                        # ECS框架,3D模型解析,3D渲染基础能力
36│   ├── LumeBase                       # 基础数据类型、数学库
37│   ├── LumeEngine                     # 资源管理、线程管理、跨平台、插件系统
38│   └── LumeRender                     # 引擎后端、渲染管线
39│   └── LumeBinaryCompile              # 引擎shader(着色器)编译
40```
41## 编译构建
42通过gn编译,在out目录下对应产品的文件夹中生成lib3dWidgetAdapter.z.solibAGPDLL.z.solibPluginAGP3D.z.solibPluginAGPRender.z.so43```
44hb build graphic_3d
45```
46## 说明
47
48### 使用说明
49AGP引擎作为OpenHarmony的组件,提供系统的3D绘制能力,包含引擎的加载、自定义灯光、相机以及纹理等能力,供开发者自定义3D模型。
50## 相关仓
51- [**graphic_graphic_2d**](https://gitee.com/abbuu_openharmony/graphic_graphic_2d)
52- [arkui_ace_engine](https://gitee.com/openharmony/arkui_ace_engine)
53- [third_party_egl](https://gitee.com/openharmony/third_party_egl)
54- [third_party_opengles](https://gitee.com/openharmony/third_party_opengles)
55- [third_party_skia](https://gitee.com/openharmony/third_party_skia)