v0.8.1
Volume 后处理系统
后处理管线升级为三层架构:Screen → Camera → Volume,对齐业界标准工作流(类似 Unity/Unreal 的 Post Process Volume)。
PostProcessVolume 组件扩展
PostProcessVolume 组件新增空间属性:
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
isGlobal | boolean | true | 为 true 时忽略形状,全局生效 |
shape | 'box' | 'sphere' | 'box' | 触发区域形状(仅 isGlobal 为 false 时有效) |
size | { x, y } | { x: 5, y: 5 } | Box 半尺寸 / Sphere 半径 |
priority | number | 0 | 高优先级覆盖低优先级 |
weight | number | 1 | 混合权重(0–1) |
blendDistance | number | 0 | 边缘渐入距离(世界单位) |
Volume 混合系统
多个 Volume 重叠时按优先级混合。系统使用 SDF(符号距离场)函数评估每个 Volume 的空间影响:
- Box Volume — 轴对齐盒体 SDF,可配置半尺寸
- Sphere Volume — 径向距离,可配置半径
- 渐入距离 — 基于距离的边缘平滑过渡
屏幕级后处理
新增屏幕级后处理层,在所有相机渲染完成后对合成结果应用效果:
import { PostProcess } from 'esengine';
const screenFx = PostProcess.createStack();screenFx.addPass('vignette', PostProcess.createVignette());screenFx.setUniform('vignette', 'u_intensity', 0.8);
PostProcess.setScreenStack(screenFx); // 对最终合成画面生效| 方法 | 说明 |
|---|---|
PostProcess.setScreenStack(stack) | 设置屏幕级效果栈(传 null 清除) |
PostProcess.screenStack | 获取当前屏幕级效果栈 |
PostProcessPlugin
后处理系统封装为标准 Plugin,自动包含在 createWebApp() 中,注册 Volume 混合系统并处理清理:
import { postProcessPlugin } from 'esengine';// 已自动包含在 createWebApp() 中,无需手动设置编辑器支持
PostProcessVolume 检查器新增所有 Volume 属性编辑:
- Is Global 复选框 — 切换全局/空间模式
- Priority — 整数输入,用于 Volume 排序
- Weight — 浮点滑块(0–1)
- Shape 下拉框 — Box 或 Sphere(非全局时显示)
- Size — Vec2 编辑器,空间范围(非全局时显示)
- Blend Distance — 边缘渐入距离(非全局时显示)
Tilemap 系统
新增 Tiled 地图加载器和瓦片地图渲染管线,完整编辑器集成。详见瓦片地图指南。
- Tiled JSON 加载器 — 加载
.tmj/.json格式的 Tiled 地图,自动解析 tileset 纹理,支持外部 tileset - Tilemap 组件 —
Tilemap和TilemapLayer组件用于 ECS 集成 - 碰撞合并 — 自动矩形碰撞区域合并,优化物理性能
- 逐图层属性 — 透明度、着色、视差滚动因子
- 编辑器支持 — Tilemap 组件检查器,带资源选择器
物理调试绘制
详见物理指南 — 调试绘制章节。
PhysicsDebugDraw— 物理碰撞体和接触点的可视化叠加层,编辑器和运行时均可使用- 渲染 Box、Circle 和 Capsule 碰撞体的线框轮廓,按刚体类型着色
- 动态刚体的速度箭头和碰撞接触点标记
- 通过
Physics.setDebugDraw(app, true)开关,或使用Physics.setDebugDrawConfig()配置
Bug 修复
- 修复 CSP 阻止
blob:URL 请求导致 esbuild WASM 初始化失败 — 在 Tauri 安全策略中添加connect-src 'self' blob: - 修复 Tilemap 纹理句柄解析和 Y 轴渲染
- 修复预览运行时加载器中 Tilemap 和音频资源的预加载
- 修复粒子系统指南代码示例与 SDK API 不匹配
测试
- 新增 Volume 混合单元测试(SDF 距离、因子计算、优先级混合)
- 新增 PostProcessPlugin 生命周期测试