跳转到内容

v0.8.1

Volume 后处理系统

后处理管线升级为三层架构:Screen → Camera → Volume,对齐业界标准工作流(类似 Unity/Unreal 的 Post Process Volume)。

PostProcessVolume 组件扩展

PostProcessVolume 组件新增空间属性:

属性类型默认值说明
isGlobalbooleantrue为 true 时忽略形状,全局生效
shape'box' | 'sphere''box'触发区域形状(仅 isGlobal 为 false 时有效)
size{ x, y }{ x: 5, y: 5 }Box 半尺寸 / Sphere 半径
prioritynumber0高优先级覆盖低优先级
weightnumber1混合权重(0–1)
blendDistancenumber0边缘渐入距离(世界单位)

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 组件TilemapTilemapLayer 组件用于 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 生命周期测试