ArisenEngine 是一个开源的、面向学习与研究的自研渲染引擎,采用模块化架构,支持多平台构建与现代图形 API(如 Vulkan)。目标是打造一个兼具可扩展性与可读性的图形引擎,供开发者探索图形编程与引擎架构。
| 组件 | 要求版本 |
|---|---|
| CMake | ≥ 3.29 |
| Vulkan SDK | 已安装(建议最新版) |
| Visual Studio | 2022(支持 C++23) |
| Windows SDK | 10+ |
| .NET SDK | 9.0+ |
| Python | 3.0+ |
ArisenEngine 采用分层模块化架构,主要分为以下几个核心层次:
┌─────────────────────────────────────────────────────────────┐
│ Editor Layer (C#) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐ │
│ │ ArisenEditor │ │ Project Mgmt │ │ UI/UX │ │
│ │ (Avalonia) │ │ & Asset Tools │ │ Framework │ │
│ └─────────────────┘ └─────────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Engine Layer (C#) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐ │
│ │ ShaderLab │ │ Serialization │ │ Models │ │
│ │ Parser │ │ System │ │ & ECS │ │
│ └─────────────────┘ └─────────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Platform Layer (C++) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐ │
│ │ Shader │ │ Window │ │ File I/O │ │
│ │ Compiler │ │ Management │ │ & Utils │ │
│ │ (DXC) │ │ (Win32) │ │ │ │
│ └─────────────────┘ └─────────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ RHI Layer (C++) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐ │
│ │ Vulkan │ │ DirectX 12 │ │ Common │ │
│ │ Backend │ │ Backend │ │ RHI │ │
│ └─────────────────┘ └─────────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Infrastructure (C++) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐ │
│ │ Logging │ │ Memory │ │ Profiling │ │
│ │ (spdlog) │ │ Management │ │ (Tracy) │ │
│ └─────────────────┘ └─────────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
- 功能: 解析 ShaderLab 格式的着色器文件,提取元数据和 HLSL 代码
- 特性:
- 完整的 Pass 解析(Name, Tags, Render States)
- HLSL 代码提取与预处理指令处理
- 渲染状态解析(Blend, ZWrite, ZTest, Cull, Stencil 等)
- Pragma 指令解析(入口点、目标模型、多编译变体)
- 基于源文本切片的代码保真度
- 输出: YAML 格式的着色器元数据,纯 HLSL 代码用于 DXC 编译
- 设计理念: 跨平台图形 API 抽象层
- 支持后端:
- Vulkan: 现代低开销图形 API,支持多线程渲染
- DirectX 12: Windows 平台高性能渲染
- 核心功能:
- 设备管理与资源分配
- 命令缓冲区与同步机制
- 管线状态对象 (PSO) 管理
- 描述符集与资源绑定
- 内存屏障与资源转换
- 编译器: DirectX Shader Compiler (DXC)
- 目标格式: SPIR-V (Vulkan) / DXIL (DirectX 12)
- 功能特性:
- HLSL 到 SPIR-V 的跨平台编译
- 着色器变体管理 (multi_compile, shader_feature)
- 包含文件依赖解析
- 优化级别控制
- UI 框架: Avalonia (跨平台 .NET UI)
- 核心功能:
- 项目管理与资源浏览器
- 着色器编辑器与预览
- 场景编辑器与实体管理
- 实时渲染预览窗口
- 扩展性: 基于插件的模块化设计
- 技术栈: CppSharp (C++ 到 C# 绑定生成)
- 功能:
- 自动生成 C++ 原生代码的 C# 绑定
- 类型安全的内存管理
- 跨语言调用优化
ShaderLab 文件 → ShaderLab 解析器 → YAML 元数据
↓
纯 HLSL 代码 → DXC 编译器 → SPIR-V 字节码
↓
SPIR-V 反射 → 描述符信息 → Vulkan 管线构建
↓
渲染管线 → GPU 执行 → 帧缓冲输出
- RHI 抽象层设计
- Vulkan 后端基础实现
- DirectX 12 后端基础实现
- 通用 RHI 接口定义
- 着色器系统
- ShaderLab 解析器完整实现
- DXC 集成与 SPIR-V 编译
- 渲染状态与 Pragma 解析
- 构建系统
- CMake 多平台构建配置
- 自动化构建脚本
- 依赖管理与第三方库集成
- 基础渲染管线
- 前向渲染管线实现
- 延迟渲染管线设计
- 阴影映射系统
- 材质系统
- 材质参数管理
- 纹理资源系统
- 材质变体与 LOD
- 几何体渲染
- 网格加载与处理
- 实例化渲染
- 几何着色器支持
- 场景编辑器
- 3D 场景视图与操作
- 实体组件系统 (ECS)
- 变换与层级管理
- 着色器编辑器
- 语法高亮与智能提示
- 实时编译与错误检查
- 着色器变体预览
- 资源管理
- 资源导入与处理
- 资源依赖跟踪
- 热重载支持
- 光照系统
- 实时光照计算
- 全局光照 (GI) 支持
- 体积光照与雾效
- 后处理效果
- 色调映射与色彩校正
- 抗锯齿 (TAA, MSAA)
- 景深与运动模糊
- 高级特性
- 计算着色器支持
- 光线追踪 (RTX/DXR)
- 多线程渲染优化
- 性能分析
- GPU 性能分析器
- 内存使用监控
- 渲染统计与优化建议
- 调试工具
- 着色器调试器
- 渲染管线可视化
- 资源泄漏检测
- 导出与部署
- 多平台构建支持
- 资源打包与压缩
- 运行时热更新
执行以下脚本生成编辑器解决方案:
Scripts/Windows/generate_editor_all.bat