引擎从设计上就是代码优先、无编辑器的。没有需要学习的场景编辑器,也没有需要接手的项目格式:
你在普通 C# 中声明 Sprite2D、
Model 与 InstancedModel,
而 AddControl / AddPanel 统一定义
2D 与 3D 的加载顺序与分层。
绑定止步于 API 边界。PBR、glTF 蒙皮、阴影、DDGI、GTAO、TAA、动态昼夜天空、MSDF 文本与 2D 精灵 都在这里装配完成,让它们在四个图形 API 上、通过同一套 API 表面协同工作。
动画只用 glTF。文本只用 MSDF。每个平台一种图形 API——没有 OpenGL 或 WebGL 回退。
平台差异被限制在 DeviceServices 之内。
声明一个 InstancedModel 即可同时绑定多个对象,
支持逐实例蒙皮与变形目标。普通 C#,无需采用第二种范式,
而且你永远不需要手写 Draw 调用。
金属度-粗糙度材质、法线、遮蔽与自发光贴图,直接从 glTF 导入。
SDF 体素化动态 GI,配备探针辐照度图集与 Chebyshev 遮蔽。
ONNX 与 GGML 后端,一套 API:文本、图像、视频、音乐、语音与视觉。
Direct3D 12、Vulkan、Metal 与 WebGPU,每个后端都有自己手写的着色器集。
蒙皮、变形目标、动画剪辑与逐实例骨骼调色板——唯一的动画格式。
三张太阳级联加一个点光源槽位共用一张图集,并支持逐级联光源空间剔除。
基于 LUT 的大气散射、昼夜循环、空气透视与程序化云层。
与分辨率无关的字形图集,由引擎在每个后端上完成排版与实例化。
一个面板、两个模型和一个质量开关。没有绘制调用,也没有渲染通道接线。
using Season.Basic;
using Season.Controls;
using Season.Panels;
using Season.Rendering;
internal class Island : Panel
{
internal Island()
{
AddControl(new Model
{
Name = "Assets/island.glb",
PosY = 0f,
Width = 60f, Height = 12f, Depth = 60f
});
AddControl(new Model
{
Name = "Assets/robot.glb",
Highlight = { Style = HighlightStyle.Wireframe },
PosX = 6f, PosY = 1f, PosZ = 4f,
Rotation = MathF.PI / 2f
});
}
}
internal class IslandApp : BaseApp
{
internal IslandApp()
{
Title = "Island";
BasicResolution = new Vector2(1920f, 1080f);
RenderQuality.DefaultGlobalIllumination = GiMode.Ddgi;
}
public override void Create()
{
base.Create();
AddPanel(new Island());
}
}
DDGI · GTAO · TAA · Direct3D 12
面向应用的模型是共享的。每个平台保留自己的渲染器与自己的着色器,
平台专属能力隐藏在 DeviceServices 之后。
| 平台 | 目标框架 | 入口点 | 后端 |
|---|---|---|---|
| Windows | net10.0-windows10.0.19041.0 | WindowsApp.Run(app) | Direct3D 12 |
| Linux | net10.0 | LinuxApp.Run(app) | Vulkan |
| Android | net10.0-android | AndroidApp.Run(app) | Vulkan |
| iOS | net10.0-ios | iOSApp.Run(app) | Metal |
| Mac Catalyst | net10.0-maccatalyst | MacCatalystApp.Run(app) | Metal |
| Web | net10.0-browser | WebApp.Run(app, ...) | WebGPU 路径 |
帧的形状在引擎代码中一目了然。它牺牲了一些调度通用性, 换来一条可阅读、可调试、可在四个后端间对齐的管线。
Compute 特效注册进两个 compute 阶段,当后端无法运行它们时不留任何残留, 因此 bloom、GTAO、TAA、DDGI 与天空 LUT 无需触碰场景模型即可扩展管线。
BaseApp
-> Panel tree
-> Controls (Sprite2D, Texts, Shape, Mesh3D, Model, InstancedModel, ...)
-> IGraphics backend
-> Direct3D 12 / Vulkan / Metal / WebGPU
对照源码审计,而非对照营销文案。列出缺失项与列出已交付项是同一个原因。
| 能力 | 状态 | 实现位置 |
|---|---|---|
| 带 compute 阶段的固定 Pass 调度 | 已发布 | Rendering/RenderPass.cs |
| Bloom、GTAO、TAA、深度调试视图 | 已发布 | Rendering/Effects/ |
| DDGI 动态全局光照 | 已发布 | Effects/Ddgi.cs |
| 天空大气、昼夜循环、云层 | 已发布 | Effects/SkyAtmosphere.cs |
| 级联阴影贴图(3 太阳级联 + 1 点光源) | 已发布 | Rendering/CascadedShadow.cs |
| 支持蒙皮与变形目标的 GPU 实例化 | 已发布 | Controls/InstancedModel.cs |
| 逐实例拾取与高亮模式 | 已发布 | Panels/ObjectPicker.cs |
| 参考应用中的属性编辑 | 部分 | 固定字段,暂无属性网格 |
| 场景序列化、保存与加载 | 缺失 | 暂无场景格式 |
| 间接绘制、纹理压缩、遮挡剔除 | 缺失 | 已排入路线 A |
Apps/Engine 不是一个极简演示。它是所有系统同时运行时
用来验证渲染器的应用——同时兼任回归测试目标。
天空大气
调试模式
拾取 · 高亮
本地推理是一套独立的技术栈,位于引擎旁,而非渲染器内部。 它的贡献不是另一个后端——而是让依赖繁重的本地模型在真实应用中变得实用: 一套 API 同时覆盖 ONNX Runtime 与 GGML、 版本一致的本地运行时,以及打包好的 CUDA / cuDNN 依赖,而不是一份手工安装指南。
文本与翻译、图像生成与编辑、视频、音乐、带声音克隆的文本转语音、语音转文本、视觉与 OCR。
文本翻译图像 视频音乐TTS STT视觉后端选择覆盖 CPU、DirectML 与 CUDA。模型权重从不捆绑:每个面板 都链接到它的源仓库。
引擎核心与基础 AI 库均为 MIT。SeasonAI,
这个产品化的应用层,是商业部分——正是这种拆分资助了开源工作。
完整的本地 AI 层 → — 包括每项能力背后的运行时, 以及生成图像与引擎资产之间仍然存在的鸿沟。
dotnet add package SeasonEngine
或者直接从仓库克隆中项目引用。
<ProjectReference Include="..\Season\Season.csproj" />
git clone https://github.com/SeasonRealms/SeasonEngine.git
cd SeasonEngine
dotnet run --project Apps/Engine/Engine.csproj -f net10.0-windows10.0.19041.0
在 Linux 上使用 -f net10.0。
需求与各平台说明见 入门指南。