记录 AoifeLab Web 在「网站原型验证 → MCP 自动落地引擎」路径上的技术决策。
首验引擎:Unreal Engine(UE)
1. 总体目标
在网站内完成渲染效果的初步测试与搭建,验证通过后将资产经 MCP(Model Context Protocol) 自动分发到各游戏引擎实现,形成可复用的 TA 研发闭环。
网站验证(低成本、快迭代)
↓ Canonical Spec(语言无关契约)
MCP 分发层(Agent 可读、可执行)
↓
引擎落地(首验:UE → 后续:Unity / Godot 等)
↓
引擎内验证(RenderDoc 抓帧等)
与项目 Framework 材质研发管线一致:渲染特性库 → 算法库 → 原型验证 → UE 集成。
2. 核心原则
| 原则 | 说明 |
|---|---|
| Spec 为契约 | 每个特性的输入、通道、参数、算法以 Canonical Spec 定义,与 Shader 语言无关 |
| 多载体共存 | 同一 Spec 维护 GLSL / WGSL / HLSL 等多种实现载体,服务不同运行时与引擎 |
| 验证分级 | 函数级验证(算法对不对)与画面级验证(风格对不对)分开,使用不同 GPU 运行时 |
| UE 优先 | 首条引擎落地链路面向 UE;MCP 与 HLSL 资产优先适配 UE Custom HLSL / Material Function |
| 渐进建设 | 先跑通单特性、单 Pass,再扩展多 Pass RenderGraph 与跨引擎适配 |
3. 双 GPU 运行时选型
网站内采用 WebGL + WebGPU 双运行时,按验证粒度分工,而非全站二选一。
3.1 WebGL — 特性函数验证(Shader 验证)
适用场景: 渲染特性库(/repo/rendering-feature)中,验证单个特性函数是否正确。
验证问题: 「这个 Feature_XXX 函数算对了吗?」
| 维度 | 选型 |
|---|---|
| API | WebGL 2.0 |
| Shader 语言 | GLSL |
| 渲染模式 | 单 Pass(球体 / Box + 简单环境) |
| 交互 | 可编辑代码、实时编译、参数滑条、iChannel 采样 |
| 参考实现 | Three.js ShaderMaterial(或等价 WebGL 封装) |
覆盖特性分类:
- Optical Transport(反射、折射、透射)
- Surface Layer(薄膜、清漆、各向异性)
- Micro Structure(闪粉、薄片、视差)
- Volume Effect(比尔定律、SSS)
与 UE 的关系: 验证的是材质函数级逻辑,对应 UE 侧 Custom HLSL 节点 / Material Function 的算法正确性。浏览器不编译 HLSL,网站运行时统一使用 GLSL。
3.2 WebGPU — 风格化画面验证
适用场景: 实验台(/lab)中,验证风格化效果与多 Pass 合成后的最终画面。
验证问题: 「这个画面风格 / Pass 链路对不对?」
| 维度 | 选型 |
|---|---|
| API | WebGPU |
| Shader 语言 | WGSL |
| 渲染模式 | 多 Pass + 迷你 RenderGraph(类 UE RDG 思维) |
| 交互 | Pass 图编辑、场景合成、风格参数、全画面 LookDev |
| 架构 | 显式 Bind Group、Render Pass Encoder、Compute Pass |
覆盖特性分类:
- Stylized Feature(猫眼、Noise、Flow 等)
- 需要多 Pass 的复核场景(如 SSR 链路、FlowMap 全屏驱动)
- 物理特性在风格化场景中的整体观感复核(如 ThinFilm 肥皂泡场景)
与 UE 的关系: WebGPU 的 Pass 调度与资源绑定方式更接近 UE 现代管线(RDG、显式 Descriptor),适合作为「缩小版渲染管线实验室」,但不替代 UE 本身。
3.3 运行时路由规则
// 概念:按特性分类自动选择预览运行时
function getPreviewRuntime(category: FeatureCategory): "webgl" | "webgpu" {
if (category === "stylized-feature") return "webgpu"
return "webgl"
}
| 页面 | 运行时 | 职责 |
|---|---|---|
/repo/rendering-feature | WebGL | 特性函数级 Shader 验证 |
/repo/algorithm-library | WebGL(GLSL / ShaderToy 风格) | 算法函数验证 |
/lab | WebGPU | 风格化画面与多 Pass 验证 |
3.4 为何不用单一 API
| 若只选 WebGL | 若只选 WebGPU |
|---|---|
| 多 Pass / Compute 场景会变得别扭 | 单函数快迭代成本偏高 |
| 与 UE RDG 思维差距较大 | 浏览器兼容性需降级策略 |
| 足够覆盖函数级验证 | 函数级验证有些过度设计 |
结论: WebGL 负责「快」,WebGPU 负责「全」与「像 UE」;两者互补。
4. Shader 资产分层
同一特性在不同层使用不同语言载体,共享 Canonical Spec:
Canonical Spec(契约,语言无关)
├── glsl → WebGL 网站预览(渲染特性库)
├── wgsl → WebGPU 网站预览(实验台)
└── hlsl → UE MCP 导出(引擎落地)
4.1 函数签名(特性库统一接口)
float3 Feature_<Name>(float3 BaseColor, float3 Normal, float3 ViewDir)
隐式依赖(由宿主材质 / 预览运行时提供):UV、世界空间变换等。
4.2 采样通道
| 通道 | 语义 | 说明 |
|---|---|---|
iChannel0 | 主采样(环境 / 背板) | Cube 或 2D |
iChannel1 | 辅助数据(如厚度 R) | 按特性定义 |
iChannel2 | 辅助数据(如吸收 RGB) | 按特性定义 |
通道定义写在 Spec 中;WebGL / WebGPU 各自实现纹理绑定,语义一致。
4.3 验证状态(规划)
将单一的 validated 拆分为两级:
| 字段 | 含义 | 达成条件 |
|---|---|---|
algorithmValidated | 函数算法验证通过 | WebGL 预览符合预期 |
lookdevValidated | 画面风格验证通过 | WebGPU 场景复核通过 |
5. MCP 与引擎落地
5.1 MCP 角色
MCP 是 Agent 与本站资产之间的协议层,不是渲染运行时。
| 能力 | 说明 |
|---|---|
| 检索特性 Spec | 返回 Canonical Spec JSON |
| 检索参考实现 | 返回 HLSL / 实现说明 |
| 引擎实现指导 | 生成 UE 落地步骤与验证清单 |
| 引擎 Authoring(规划) | 写入 HLSL 文件、触发 UE Editor 脚本 |
站点入口:/tools/mcp、/tools/mcp/feature-spec
规划端点:/api/mcp(Streamable HTTP)
5.2 首验引擎:Unreal Engine
UE 集成按侵入程度分档,首验从低到高:
| 阶段 | 集成方式 | MCP 自动化难度 | 首验优先级 |
|---|---|---|---|
| P0 | Custom HLSL 节点 | 低(纯文本) | ✅ 首选 |
| P1 | Material Function | 中(Editor API) | 第二阶段 |
| P2 | Substrate Slab | 高 | 后期 |
| — | Custom Shading Model | 改引擎源码 | 不做首验 |
首条链路:
网站 Canonical Spec + HLSL 参考
→ MCP get_feature_spec / get_feature_hlsl
→ UE Custom HLSL 文件 + 母材质实例
→ LookDev 场景目视确认
→ RenderDoc MCP 抓帧对比(验证闭环)
5.3 现有 MCP 能力复用
| MCP Server | 用途 |
|---|---|
| 本站 MCP(规划) | 读 Spec、指导 UE 实现 |
| RenderDoc MCP | 引擎落地后的抓帧分析与 Pass 级验证 |
| Notion MCP | 文档与知识沉淀(可选) |
6. 网站模块与代码映射
| 模块 | 路径 / 文件 | 当前状态 | 目标状态 |
|---|---|---|---|
| 特性规格 | lib/mcp-feature-specs.ts | ✅ Spec 已有(Transmission) | 补全各特性 + 双验证状态 |
| HLSL 资产 | lib/repo-feature-shaders.ts | ✅ Transmission HLSL | 逐特性补充 |
| GLSL 资产 | lib/feature-shader-glsl.ts(待建) | ❌ | WebGL 运行时 |
| WGSL 资产 | lib/feature-shader-wgsl.ts(待建) | ❌ | WebGPU 运行时 |
| 特性库工作区 | components/repo-library-workspace.tsx | 状态未贯通 | 共享 shader / params / channels |
| Shader 面板 | components/repo-shader-panel.tsx | 只读展示 | 可编辑 + 编译报错 |
| 预览面板 | components/repo-preview-panel.tsx | CSS 占位 | WebGL Canvas |
| 实验台 | app/lab/page.tsx | 占位页 | WebGPU RenderGraph |
| Shader 编译 | lib/shader-compiler.ts(待建) | ❌ | WebGL 编译与 uniform 绑定 |
| 通道纹理 | lib/channel-texture.ts(待建) | ❌ | 图片 / 算法 → GPU 纹理 |
7. 数据流
7.1 WebGL 特性验证流
用户编辑 GLSL 代码
→ debounce → compileShader
→ 成功:球体预览更新 / 失败:显示编译错误
用户拖动参数滑条(来自 Spec)
→ 更新 uniform(无需重新编译)
用户更换采样(图片 / 算法)
→ 重新生成 iChannel 纹理 → 更新 uniform
7.2 WebGPU 风格化验证流
用户配置 Pass Graph(或选择预设场景)
→ 各 Pass WGSL 编译
→ 按依赖顺序执行 RenderPass / ComputePass
→ 输出最终画面
可将 WebGL 已验证特性作为 Graph 中的一个 Pass 输入
7.3 MCP → UE 落地流
特性 algorithmValidated = true
→ Agent 调用 MCP 读取 Spec + HLSL
→ 写入 UE 工程 Content/Shaders/Features/
→ Editor Python 更新母材质参数与节点
→ LookDev 确认 → RenderDoc 复核
8. 实施路线图
| 阶段 | 内容 | 产出 |
|---|---|---|
| P0 | WebGL + 渲染特性库 | Transmission 可编辑 GLSL、参数、采样、球体实时预览 |
| P1 | 状态贯通 + 编译器 | repo-library-workspace 统一状态;编译错误展示 |
| P2 | MCP UE 首验 | ue-authoring MCP:Spec 读取 + HLSL 部署 + Editor 脚本 |
| P3 | WebGPU 实验台骨架 | 迷你 RenderGraph + 首个风格化场景(CatEye / Flow) |
| P4 | 跨管线联动 | WebGL 验证通过 → 送入 WebGPU 场景复核;双 validated 状态 |
| P5 | 扩展引擎 | Unity / Godot MCP 适配器 |
原则: 不等待 WebGPU 完成再启动 WebGL;UE 落地可与网站 WebGL 验证并行推进。
9. 关键决策记录
| 决策 | 选项 | 结论 | 理由 |
|---|---|---|---|
| 网站预览 GPU API | WebGL only / WebGPU only / 双运行时 | 双运行时 | 函数验证要快,风格验证要全 |
| 特性库运行时 | WebGL / WebGPU | WebGL | 单 Pass 快迭代,足够验证 Feature 函数 |
| 实验台运行时 | WebGL / WebGPU | WebGPU | 多 Pass、类 RDG,适合风格化 LookDev |
| 网站 Shader 语言 | HLSL / GLSL / WGSL | GLSL + WGSL | 浏览器可编译;HLSL 仅作 UE 导出 |
| 引擎首验 | UE / Unity / … | UE | 与 HLSL 资产、Framework 管线终点一致 |
| UE 首验集成方式 | MF / Substrate / Custom HLSL | Custom HLSL | 文本资产,MCP 最易自动化 |
| 资产唯一真相源 | Shader 字符串 / Spec | Canonical Spec | 多语言载体共享契约,MCP 可翻译 |
| 当前 CSS 预览 | 保留 / 替换 | 替换为 WebGL | CSS 无法做真实 Shader 验证 |
10. 相关文档
- 2026-07-15-渲染特性库预览与采样原型计划.md
- 2026-07-16-渲染特性Shader资产计划.md
- 2026-07-16-MCP开发计划.md
- 2026-07-16-工具MCP子页面计划.md
- 2026-07-16-MCP特性规则设计子页面计划.md
修订记录
| 日期 | 说明 |
|---|---|
| 2026-07-16 | 初版:确立 WebGL/WebGPU 双运行时、UE 首验、Spec 契约与 MCP 落地路线 |