Skip to content

Furry-Monster/Realm

Repository files navigation

RealmEngine

一个基于 OpenGL 的现代游戏引擎,专注于基于物理的渲染(PBR)和高质量图形效果,支持IBL与Bloom后处理。现已包含完整的编辑器系统和实体组件系统(EC)。

pbr demo

编辑器demo

特性

  • 基于物理的渲染(PBR) - 支持金属度/粗糙度工作流
  • 基于图像的照明(IBL) - 支持 HDR 环境贴图和预计算光照
  • Bloom 后处理 - 可配置的泛光效果、色调映射与伽马矫正
  • 可视化编辑器 - 基于 ImGui 的完整编辑器,支持场景编辑、实体管理和属性调整
  • 实体组件系统(ECS) - 灵活的组件系统,支持 Transform、Renderable、Lighting、CameraController 等组件
  • 场景管理 - 完整的场景创建、加载、保存和管理系统,支持场景序列化
  • 资源管理 - 支持 glTF、FBX 等模型格式
  • 配置管理 - 统一的配置管理系统,支持序列化和加密
  • 窗口管理 - 基于 GLFW 的跨平台窗口系统
  • 日志系统 - 基于 spdlog 的日志记录

系统要求

  • 操作系统: Linux / macOS ,Windows不支持
  • 编译器: 支持 C++17 的编译器(GCC 7+, Clang 5+, MSVC暂不支持)
  • CMake: 3.20 或更高版本
  • OpenGL: 3.3 或更高版本
  • Python: 3.6+(手动构建也行,不推荐)

依赖库

项目已包含以下依赖库(位于 libs/ 目录):

  • GLFW - 窗口和输入管理
  • GLAD - OpenGL 加载器
  • GLM - 数学库
  • Assimp - 模型加载
  • spdlog - 日志系统
  • ImGui - 即时模式 GUI
  • stb - 图像加载

项目中依赖库大部分使用submodule管理,克隆时请同时克隆依赖库,例如:

# 1.使用递归克隆
git clone --recursive https://github.com/Furry-Monster/Realm

# 2.手动管理依赖库
# 克隆原始仓库
git clone https://github.com/Furry-Monster/Realm

# 初始化子模块
git submodule init

# 下载依赖库
git submodule update

快速开始

使用构建脚本(推荐)

最简单的方式是使用提供的 Python 构建脚本:

# 默认构建
python build.py

# Release 模式构建
python build.py --type Release

# 构建并运行编辑器
python build.py --run

# 运行调试模式,不启用编辑器
python build.py --run --debug

# 清理并重新构建
python build.py --clean --run

构建完成后,运行 bin/RealmEngine 将启动编辑器模式。如需运行调试模式(无编辑器界面),使用 bin/RealmEngine debug

windows下暂时不支持MSVC,请使用MinGW工具链手动编译,后面搞懂了再加MSVC的支持。

手动构建

# 创建构建目录
mkdir build && cd build

# 配置 CMake
cmake .. -DCMAKE_BUILD_TYPE=Debug

# 编译
cmake --build . -j$(nproc)

# 运行(Linux/macOS)
../bin/RealmEngine

项目结构

RealmEngine/
├── assets/          # 资源文件(模型、纹理、HDR 等,这里的文件会自动打包成导出资源)
├── shaders/         # GLSL 着色器文件(同上,也会打包成导出资源)
├── src/             # 源代码
│   ├── main.cpp     # 引擎主循环(支持编辑器模式和调试模式)
│   ├── editor/      # 编辑器系统
│   │   ├── widgets/ # 编辑器组件(菜单栏、场景层次、属性面板、文件对话框等)
│   │   └── ...
│   ├── render/      # 渲染系统
│   ├── resource/    # 资源管理
│   ├── gameplay/    # 游戏逻辑
│   │   ├── components/  # 组件系统(Transform、Renderable、Lighting、CameraController)
│   │   └── scene/       # 场景管理(Scene、SceneManager、SceneSerializer)
│   └── ...
├── libs/            # 第三方库
├── bin/             # 构建输出目录
└── build/           # CMake 构建目录

构建选项

构建类型

  • Debug - 调试模式(默认)
  • Release - 发布模式
  • RelWithDebInfo - 带调试信息的发布模式
  • MinSizeRel - 最小体积发布模式

构建脚本选项

python build.py [选项]

选项:
  -t, --type TYPE        构建类型 (Debug/Release/RelWithDebInfo/MinSizeRel)
  -d, --dir DIR          构建目录(默认: build)
  -g, --generator GEN    CMake 生成器(默认: Ninja)
  -j, --jobs N           并行编译任务数
  -c, --clean            清理构建目录
  -r, --run              构建后运行
  -v, --verbose          详细输出
  --configure            仅配置 CMake
  --build                仅构建(跳过配置)
  --format              格式化代码
  --lint                 代码检查
  --lint-fix             代码检查并自动修复

代码质量工具

项目支持使用 clang-format 和 clang-tidy 进行代码格式化和检查:

# 格式化代码
python build.py --format
# 或使用 CMake 目标
cmake --build build --target format

# 代码检查
python build.py --lint
# 或使用 CMake 目标
cmake --build build --target lint

# 自动修复代码问题
python build.py --lint-fix
# 或使用 CMake 目标
cmake --build build --target lint-fix

编辑器功能

编辑器提供了以下功能面板:

  • 菜单栏 - 文件操作(新建、打开、保存场景)、编辑功能等
  • 场景层次结构 - 显示场景中的所有实体和节点,支持选择和操作
  • 属性面板 - 显示和编辑选中实体的组件属性(Transform、Renderable、Lighting 等)
  • 视口面板 - 实时预览场景渲染结果
  • 文件对话框 - 用于打开和保存场景文件

场景文件以 JSON 格式保存,支持完整的场景序列化和反序列化。

资源文件

  • 模型: 支持 glTF、FBX 等格式(通过 Assimp)
  • 纹理: 支持常见图像格式(通过 stb_image)
  • HDR 环境贴图: 支持 .hdr 格式用于 IBL

资源文件应放置在 assets/ 目录中,构建时会自动复制到 bin/assets/

着色器

着色器文件位于 shaders/ 目录:

  • pbr.vert/frag - PBR 主着色器
  • skybox.vert/frag - 天空盒着色器
  • bloom.vert/frag - Bloom 后处理着色器
  • post.vert/frag - 后处理着色器
  • ibl/ - IBL 相关着色器

贡献

欢迎提交 Issue 和 Pull Request!

About

Realm rendering Engine , now developed.

Resources

License

Stars

Watchers

Forks

Packages

No packages published