Lambix-Engine 项目

项目背景

Lambix-Engine 是我计划开发的一款 3D 游戏引擎,也是我的本科毕业设计的一部分。这个引擎的目标是支持多平台(Windows、Linux、Mac)运行,最终能够成为一个跨平台的 3D 游戏开发工具。在开发过程中,我不仅仅是想实现一个可以渲染和展示 3D 图形的引擎,还希望通过这个项目积累更多关于引擎架构和图形渲染技术的理解。

目前进展

基础框架

目前我已经搭建了 Lambix-Engine 的基础框架,主要实现了以下几个核心模块:

  • 日志系统:使用 spdlog 库实现了日志记录功能,方便调试和记录引擎运行时的各类信息。
  • 事件系统:开发了一个简单的事件系统,初步实现了基础的事件处理功能。
  • 窗口管理:利用 GLFW 库成功创建了窗口,并计划在此基础上扩展以支持多平台。

渲染接口

我的下一个主要任务是实现渲染模块。为了让引擎具有更高的扩展性,我打算在引擎中抽象出一套图形渲染接口。目前的计划是在毕业设计中先使用 OpenGL 完成渲染的基本功能,未来可能逐步添加对 Vulkan 的支持,从而实现多 API 渲染的灵活性。

Lambix-Engine 渲染与 ECS 系统开发规划

本规划将 ECS 系统与渲染系统相结合,按照实现顺序逐步构建 Lambix-Engine 的核心框架。功能设计从基础组件开始,逐步实现多层次的渲染功能和 ECS 模块,以便保证引擎的模块化和扩展性。


阶段一:基础架构搭建

  • 窗口和上下文创建

    • 使用 GLFW 创建渲染窗口与上下文,支持初始配置(分辨率等)。
  • 渲染循环

    • 实现主渲染循环,包括清除屏幕、更新、交换缓冲区,确保稳定帧率。
  • 基础 ECS 系统

    • 实体管理:实现实体创建与销毁,并分配唯一 ID。
    • 组件管理:实现组件添加、删除和查找,建立组件池以优化存储。
    • 系统管理:支持系统注册、优先级和执行顺序管理。

阶段二:核心渲染与 ECS 集成

  • 基本着色器系统

    • 创建顶点、片元着色器,支持 GLSL 着色器的加载、编译和链接。
  • 几何体绘制

    • 支持简单几何体的绘制(如三角形和四边形),为 ECS 系统渲染功能打下基础。
  • Transform 组件与系统

    • Transform 组件:存储位移、旋转、缩放等信息。
    • Transform 系统:计算物体的世界变换矩阵,处理层级更新(父子关系)。
  • Mesh 组件与渲染系统

    • Mesh 组件:存储网格数据(顶点、法线、UV 坐标等)。
    • Mesh 渲染系统:渲染具有 Mesh 组件的实体,将组件数据传入渲染管线。

阶段三:资源管理与基础光照

  • 资源加载与管理

    • 纹理加载(支持 PNG、JPG 格式),并绑定和管理纹理资源。
    • 支持模型文件加载,解析顶点、法线、UV 数据。
  • 材质系统与 Material 组件

    • 实现基本材质属性(颜色、贴图),支持法线贴图等效果。
    • Material 组件:关联材质数据并支持 Mesh 渲染系统调用。
  • 基础光照系统与 Light 组件

    • Light 组件:支持环境光、点光源、方向光和聚光灯。
    • 光照系统:实现 Phong 光照模型,支持环境光、漫反射、镜面反射。

阶段四:相机系统与扩展渲染功能

  • Camera 组件与系统

    • Camera 组件:提供相机位置和视角控制。
    • Camera 系统:更新视角和投影矩阵,供渲染使用。
  • 阴影映射

    • 实现基于深度图的阴影映射,支持方向光和点光源的阴影效果。

阶段五:优化与高效渲染

  • 后处理效果

    • 引入帧缓冲区,支持后处理效果如 HDR、景深、屏幕空间环境光遮蔽。
  • 视锥裁剪系统

    • 通过视锥体裁剪剔除视野外的物体,优化渲染性能。
  • 批处理渲染系统

    • 实现相同材质的物体批量渲染,减少绘制调用次数。

阶段六:多平台支持与未来扩展

  • 跨平台接口

    • 抽象渲染接口,便于在不同平台之间切换渲染 API。首先实现 OpenGL,预留 Vulkan 支持接口。
  • 事件系统

    • 支持事件订阅和分发,提供系统间的通信机制,减少系统间耦合。
  • 脚本系统

    • 实现脚本接口,支持 Lua 或 Python,赋能 ECS 系统中的实体控制。

以上步骤将帮助 Lambix-Engine 在本科毕业设计中逐步搭建 ECS 和渲染系统的核心框架,并为未来的高级功能提供良好的架构基础。

未来展望

Lambix-Engine 对我来说是一个长期的工程,毕业设计只是一个起点。通过这个项目,我希望深入学习 3D 渲染和引擎架构设计的方方面面,积累丰富的开发经验。未来,如果时间和精力允许,我还打算把这个引擎开放给社区,和更多的开发者一起完善它。

总结

目前 Lambix-Engine 的开发仍处于初级阶段,但随着时间推移,我会不断更新项目的进展。这不仅是一个学习和成长的过程,也是我对游戏引擎开发领域的探索旅程。如果你对 Lambix-Engine 或 3D 引擎开发感兴趣,欢迎一起讨论和交流。

敬请期待后续更新!